【问题标题】:Limiting processing time of request for WCF or ASMX webservice限制 WCF 或 ASMX 网络服务请求的处理时间
【发布时间】:2023-01-09 14:37:32
【问题描述】:

假设我有一个托管在 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" /> - 也没有用

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

【问题讨论】:

    标签: web-services wcf asmx .net-4.8


    【解决方案1】:

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

    客户端:

    发送超时用于初始化 OperationTimeout,它管理发送消息的整个交互(包括在请求-回复情况下接收回复消息)。当从 CallbackContract 方法发送回复消息时,此超时也适用。打开超时和关闭超时用于打开和关闭通道(当没有传递明确的超时值时)。接收超时未使用。

    服务器端:

    发送、打开和关闭超时与客户端相同(用于回调)。接收超时ServiceFramework 层使用它来初始化空闲会话超时。

    【讨论】:

      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      • 2013-10-19
      • 1970-01-01
      • 2013-02-08
      • 2012-12-02
      • 1970-01-01
      相关资源
      最近更新 更多