C# 基础连接已经关闭: 服务器关闭了本应保持活动状态的连接的错误

来源:互联网 发布:nginx加lua模块 编辑:程序博客网 时间:2024/05/22 02:23

原文地址:点击打开链接


C# 调用JAVA的WebService时常会出现:

基础连接已经关闭: 服务器关闭了本应保持活动状态的连接的错误

 

问题可能原因之一:网速的快慢,我经过测试,如果外网访问的话网速慢就是出现此类问题,但是我没有精确测出当在网络流量最低在什么情况下可以避免此类问题 

问题可能之二:程序发布之前没把原引用的web service地址去掉再编译发布。 

问题可能之三:检查自已的源代码 

问题可能之四:用SQL2000要升级到SP4 

解决: 
首先将引用该WebServices的程序在IDE中打开; 
然后在“解决方案资源管理器”中展开“web reference”——“webservices 名”——“Reference.map”——“ 

Reference.cs(.vb)”; 
cs文件中添加如下代码: 

using System.Net; 

protected override WebRequest GetWebRequest( Uri uri) 

      HttpWebRequest  webRequest = ( HttpWebRequest)base.GetWebRequest(uri); 
      webRequest.KeepAlive = false; 
      webRequest.ProtocolVersion = HttpVersion.Version10; 
      return webRequest; 
}

然后,在web.config的<system.web>中添加如下代码:

<webServices>

<protocols>

<add name="HttpSoap"/>

<add name="Documentation"/>

<remove name="HttpSoap12"/>

<remove name="HttpPost"/>

<remove name="HttpGet"/>

</protocols>

</webServices>

vb文件中添加如下代码: 

Imports System.NET 

Protected Overrides Function GetWebRequest()Function GetWebRequest(ByVal url As Uri) As WebRequest 
            Dim webrequest As HttpWebRequest = MyBase.GetWebRequest(url) 
            webrequest.KeepAlive = False 
            Return webrequest 
End Function


1 0