如何避免WCF超时?

时间:2010-05-05 16:31:53

标签: c# .net wcf timeout

我使用netNamedPipeBinding,我的服务方法没有返回任何内容(void),但是它们超时了:

  

TimeoutException:“打开的操作未在分配的00:01:00超时内完成。分配给此操作的时间可能是较长超时的一部分。”

     

服务器堆栈跟踪:      在System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan超时)      在System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan超时)      在System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan超时)      在System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan超时)      在System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan超时,CallOnceManager级联)      在System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan超时)      在System.ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs,TimeSpan timeout)      在System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)      在System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

     

在[0]处重新抛出异常:      在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)      在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 type)

为避免这种情况,我将服务转为OneWay操作。但是超时仍然会发生。我希望它解决了我的问题。 netMsmqBinding是唯一可以避免这种超时的方法吗?

我还试图在一个单独的线程中进行所有处理,因此服务可以提前断开连接,但没有成功。

1 个答案:

答案 0 :(得分:1)

我觉得这是连接超时。所以绑定不应该在其中发挥作用。可能是服务接受调用存在一些问题。你是如何部署它们的,或者服务器端有什么问题吗?你能做一些记录或追踪吗?可能会打开tracelistener。