.net 如何避免WCF中的超时?

cvxl0en2  于 2023-06-25  发布在  .NET
关注(0)|答案(2)|浏览(126)

我使用netNamedPipeBinding,我的服务方法不返回任何东西(void),但它们超时:
TimeoutException:“打开操作未在分配的超时时间00:01:00内完成。分配给此操作的时间可能是较长超时的一部分。”
服务器堆栈跟踪:在System。ServiceModel。渠道。ClientFrameingDuplexSessionChannel。OnOpen(TimeSpan超时)在系统。ServiceModel。渠道。CommunicationObject。系统打开(TimeSpan超时)。ServiceModel。频道。服务频道。OnOpen(TimeSpan超时)在系统。ServiceModel。频道。CommunicationObject。系统打开(TimeSpan超时)。ServiceModel。频道。服务频道。CallOnceManager。系统中的CallOnce(TimeSpan超时,CallOnceManager级联)。ServiceModel。渠道。服务频道。EnsureOpened(TimeSpan超时)系统。ServiceModel。渠道。服务频道。在System上调用(String action,Boolean oneway,ProxyOperationRuntime operation,Object[] ins,Object[] outs,TimeSpan timeout)。服务模型。频道。ServiceChannelProxy。系统上的InvokeService(IMMethodCallMessage methodCall,ProxyOperationRuntime操作)。ServiceModel。频道。ServiceChannelProxy。调用(IMessage消息)
在[0]处重新抛出异常:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)在System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32类型)
为了避免这种情况,我把我的服务变成了OneWay操作。但是超时仍然发生。我以为它能解决我的问题。netMsmqBinding是唯一一个可以避免这样的超时的?
我还尝试在一个单独的线程中进行所有处理,以便服务可以更早地断开连接,但没有成功。

lo8azlld

lo8azlld1#

我觉得这是一个连接超时。所以约束力不应该在其中发挥作用。可能是服务在接受调用方面存在一些问题。您是如何部署它们的,或者服务器端是否存在任何问题?你能做一些记录或追踪吗?跟踪器大概可以打开。

zlwx9yxi

zlwx9yxi2#

我试了所有的答案,但还是得到了错误。然而,对我来说,错误发生在部署到远程服务器之后,而不是在VS Code中开发期间。
所以,我不得不去远程服务器的IIS管理器。点击左侧菜单上的“应用程序池”,选择“我的网站”,然后在“高级设置”(右侧),我将“开始模式”设置为“始终运行”,而不是“按需”。点击“确定”,它工作了。

相关问题