我是一个广泛使用 WCF 的项目的新手,我对 WCF 的经验并不丰富。我正在尝试追踪一个问题,即我的 UI 在等待长时间运行的服务调用返回时 10 分钟后出现超时错误。非常粗略地这是我的项目所需要的:
[service A] <=> [service B] <=> [UI console]
这是我迄今为止收集到的:
超时发生在 serviceA 和 serviceB 之间,而不是在 serviceB 和 UI 控制台之间,因为我实际上有两个单独的 UI 控制台:一个是 MMC 管理单元,一个是 PowerShell 管理单元,两者都表现出相同的 10 分钟超时.
我在 serviceA 和 serviceB 中的端点都使用 basicHttpBinding;两者都有 bindingConfigurations 指定 sendTimeout 和 receiveTimeout 为 30 分钟,而不是 10 分钟。
ReliableSession.InactivityTimeout 默认为我读过的 10 分钟,但我不相信其中任何一个都是 ReliableSession,因此它不适用。
我为 WCF 跟踪检测了 serviceB;ServiceTraceViewer 显示了在长时间运行的服务调用开始之前的适当活动,然后在 10 分钟超时之前没有任何内容。
随时就我的任何断言挑战我和/或让我知道我还能做些什么来诊断这个问题。
2013.04.04 更新
这是实际的错误消息:
00:09:59.9839984 后等待回复时请求通道超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。
服务器堆栈跟踪:System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage信息)
在 [0] 处重新引发异常:在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型) 处的 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) 处 NextIT.ActiveAdministration。 DataContracts.IActiveAdministration.PublishAgentSettings() 在 ...
内部异常:
对“ ”的 HTTP 请求
http://localhost/MyAdminService/
已超过分配的超时时间 00:10:00。分配给此操作的时间可能是较长超时的一部分。在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException,HttpWebRequest 请求,HttpAbortReason abortReason)
在 System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(时间跨度超时)在 System.ServiceModel.Channels.RequestChannel.Request (消息消息,TimeSpan 超时)