Web Services 限制WCF或ASMX Web服务请求的处理时间

bvpmtnay  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(213)

假设我有一个托管在IIS 10上的Web服务(WCF和ASMX. net framework 4.8)。Web服务有一个包含以下内容的方法:

public CustomerListResponse Get(CustomerListRequest request)
{
    //sleep for 1 hour
    System.Threading.Thread.Sleep(TimeSpan.FromHours(1));
    
    return new CustomerListResponse();
}

在线程上执行休眠的代码行只是为了说明有些代码在某些情况下可能需要很长时间。
我正在寻找的是设置或限制允许的处理时间的方式,例如一分钟和错误返回到客户端。我希望处理被IIS/WCF/ASMX杀死,如果执行时间将超过一分钟。
不幸的是,我没有在IIS中找到这样做的方法。
我尝试了:

  • 在WCF绑定时,有几个属性openTimeout ="00:01:00" closeTimeout ="00:01:00" sendTimeout ="00:01:00" receiveTimeout ="00:01:00"-我设置了所有属性,但没有工作。代码仍然可以处理很长时间。
  • <httpRuntime targetFramework="4.8" executionTimeout="60" />-也不起作用

我没有其他的想法如何实现这一点,但我相信应该有一些解决方案,能够控制多长时间,我们希望花在处理。

cl25kdpy

cl25kdpy1#

您需要在客户端和服务器端都设置超时。
客户端:

    • SendTimeout**用于初始化OperationTimeout,后者管理发送消息的整个交互(包括在请求-回复情况下接收回复消息)。此超时也适用于从CallbackContract方法发送回复消息时。OpenTimeout和CloseTimeout用于打开和关闭通道(未传递显式超时值时)。ReceiveTimeout未使用。

服务器端:

    • 发送、打开和关闭超时**与客户端上的相同(对于回调)。ReceiveTimeout由ServiceFramework层用于初始化空闲会话超时。

相关问题