【发布时间】: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