【问题标题】:How do I change timeout on an IIS hosted WCF service?如何更改 IIS 托管的 WCF 服务的超时?
【发布时间】:2012-11-21 14:00:13
【问题描述】:

我们有一个托管在 IIS 中的 WCF 服务。我可以从日志文件中看到,发送需要 3 分钟以上才能执行的请求的客户端收到 HTTP 503(服务不可用)错误。

如何更改超时?为了测试它是否有效,我将超时时间减少到 3 秒,以确保它确实超时了。

我试过了

<system.web> 
    <httpRuntime executionTimeout="3"/> 
</system.web> 

这似乎什么也没做。

我也试过更改绑定无济于事。

  <basicHttpBinding>
    <binding name="basicHttp" receiveTimeout="00:00:03" sendTimeout="00:00:03" >
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Ntlm" proxyCredentialType="None" realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>

注意,我试图让 WCF 服务在我们控制的持续时间后返回某种故障。我不希望花费比预期更长的时间来终止请求。

在我撕掉头发之前最感谢的任何帮助。


只是为了澄清......

该服务已经启动并运行了几个月。但是在处理偶尔长时间运行的请求时,客户端会在 3 分钟后收到 HTTP 503 响应。在后台,我们可以看到请求已被正确处理,但花费了 > 5 分钟。显然,此时为时已晚,因为客户端已经收到错误响应。

其他请求正在正常处理中。

此时系统的负载非常低。事实上,这是一个测试环境,事务一次一个,没有重叠。

我也很确定绑定已连接到端点。我已经在 WCF 配置编辑器中打开了配置文件,并且所有内容都已正确链接。

现在是否可以在 WCF 中配置超时?如果不是,我会理解,但为什么会返回 HTTP 503 错误?

我们真正想做的就是控制返回 503 响应之前的时间长度。

【问题讨论】:

  • 你有没有想过也许异步运行这个并轮询结果?
  • 该服务已经投入生产一段时间了,这种变化不会在不久的将来发生。暂时,我们只想控制超时时间。
  • 如果服务有绑定错误(没有特殊处理),客户端只会看到一个http错误。如果您将客户端代理的超时时间更改为 3 秒,客户端应该会看到您预期的通信异常。
  • 您好 ErnieL,我不确定我是否理解...客户端是外部的(因此无法更改其超时)并且它正在接收 HTTP 503 错误。问题是,我不知道如何更改服务器在将错误响应发送回客户端之前需要多长时间。

标签: wcf


【解决方案1】:

通常,当我在绑定中进行对服务端点没有影响的更改时,这是因为绑定未连接到端点。

如果现在一切都变成 503 并且之前正常工作,则可能是作为应用程序池身份的用户帐户的密码已过期。

如果它适用于某些调用而不适用于其他调用,并且负载增加了,则可能是客户端没有关闭连接,并且您达到了最大并发调用数的默认限制。

【讨论】:

  • 感谢您回复设拉子。作为回应,我扩展了我的问题。我最初的想法是一样的,绑定实际上并不是参考,但我很有信心它没问题。而 503 错误仅在事务处理时间超过 3 分钟时才会返回。
【解决方案2】:

在 IIS 和测试 WCF 服务中进行了大量实验后,我无法重现该问题 - 即使在同一台服务器上也是如此。只有公司内的其他团队才能看到此问题。

我可以强制 HTTP 503 错误的唯一方法是使应用程序池脱机,但可以预见的是,这会导致在请求进入时立即返回错误。

进一步调查表明,与来自 IIS 的 503 响应相关联的 HTML 与返回给客户端的 HTML 不同。

诚然,这尚未得到证实,但我们已经得出结论,该问题是由客户端和服务器之间的某些网络组件引起的。

确实有一个代理正在返回超时。

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 2022-12-13
    • 2015-10-18
    • 2011-10-14
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多