微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WCF 调用超时,但收到 HTTP 500(64) 错误

如何解决WCF 调用超时,但收到 HTTP 500(64) 错误

我有一个应用程序(在生产环境中),它对 WCF 服务(.Net Framework 4.0、SOAP BasicHttpBinding)进行大量并发(多线程)调用。有时,最后一个请求会抛出 TimeoutException:

System.TimeoutException: The request channel timed out while waiting for a reply after...

我无法在本地环境中重现它,因此很难应用更改来尝试。无论如何,我增加了超时时间,但异常抛出同样(后来显然)。我已经跟踪服务器搜索线程间锁或 Oracle 锁,但我找不到任何东西。

我已经激活了内部代码跟踪,我推断请求没有到达我的服务器代码,因此,查看 IIS 跟踪我发现在请求之后出现了一个 HTTP 错误 ~2':

sc-status sc-substatus sc-win32-status time-taken
500       0            64              118265

但是超时异常会根据wcf绑定配置在后面抛出。所以我有两个问题:

  • 为什么 WCF 没有捕获那个 http 错误并一直在等待响应?我已经搜索错误,但我对服务节流参数的值很高。
  • 为什么服务器在没有获得服务器代码的情况下抛出该错误,甚至在我实现的 IdispatchMessageInspector 上都没有,以便在请求和响应时记录一些数据?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。