我使用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是唯一可以避免这种超时的方法吗?
我还试图在一个单独的线程中进行所有处理,因此服务可以提前断开连接,但没有成功。
答案 0 :(得分:1)
我觉得这是连接超时。所以绑定不应该在其中发挥作用。可能是服务接受调用存在一些问题。你是如何部署它们的,或者服务器端有什么问题吗?你能做一些记录或追踪吗?可能会打开tracelistener。