Aud*_*zzy 14 .net wcf service-reference system.net.webexception communicationexception
我有一个WCF服务,在负载条件下给我这个错误(我似乎无法重新创建错误).我们一直试图找到解决方法大约一个星期,现在没有这样的运气..
我看到的错误有两个部分,
System.ServiceModel.CommunicationException:通过http通道传输数据时发生错误:(请求已中止:请求已取消.)
和:
System.Net.WebException:请求已中止:请求已取消.
我见过很多人建议通过重载Reference.cs
文件和设置中的方法来禁用处于保持活动状态KeepAlive = false
,但是,我们的客户端正在使用服务引用(除了Web引用)并且此选项不再存在.
我看到的另一个选项是向服务添加自定义绑定而不是BasicHttpBinding
我们现在使用的,但是这会对那些使用webReference的人(因为CustomBinding
没有启用SOAP)的后端支持Web服务.
有没有人以前处理过这个错误?有没有办法在不影响服务器端的情况下禁用WCF中的keep alive?是否还有其他任何可以导致此错误的活着?
我不认为HTTP保持活着是对此负责.WCF应该能够自己处理这个问题,因此HTTP持久连接在请求之间共享,如果它过期(它在100次不活动后到期),WCF会创建新的连接而不会触发任何异常.如果您的连接在请求传输期间中止,那么我预计会有一些其他问题.
您可以将此自定义绑定用作BasicHttpBinding的等效项,而不保持HTTP活动:
<bindings>
<customBinding>
<binding name="NoKeepAlive">
<textMessageEncoding messageVersion="Soap11" />
<httpTransport keepAliveEnabled="false" />
</binding>
</customBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)
我在尝试上传大文件时遇到了这个问题。我必须将其添加到网络服务的 web.config 中
<system.web>
<httpRuntime maxRequestLength="10240" />
Run Code Online (Sandbox Code Playgroud)