前段时间开发.net 程序遇见这个问题,在此处分享一下解决方案。
出错坏境:
.net程序给webservice接口传送数据时候,其中偶尔的一条或者几条会出现:
基础连接已经关闭: 服务器关闭了本应保持活动状态的连接。
获取错误完整信息如下:
System.Net.WebException: 基础连接已经关闭: 服务器关闭了本应保持活动状态的连接。
在 System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
在 SAP.BLL.SAP_PI_IFS0030.SI_TMS_DELIVERYAUDITPRINT_OUT_SYNService.SI_TMS_DELIVERYAUDITPRINT_OUT_SYN(DT_TMS_DELIVERYAUDITPRINT_REQ MT_TMS_DELIVERYAUDITPRINT_REQ) 位置 E:\01 LovolTMS Source\LOVOLTMS201501091201\SAP.BLL\Web References\SAP-PI-IFS0030\Reference.cs:行号 79
在 SAP.BLL.BLLIFS0030.SendIFS0030(DataRow dr) 位置 E:\01 LovolTMS Source\LOVOLTMS201501091201\SAP.BLL\BLLIFS0030.cs:行号 36
解决办法:
在vs2010 解决方案资源管理器 中 显示所有文件,Web References 下面所用引用下面的 Reference.map 下面的Reference.cs(如果还没找到看下面图片),打开Reference.cs文件
如果有GetWebRequest方法加上webRequest.KeepAlive = false;
没有就重写GetWebRequest,简单点就是把以下代码贴上去
protected override WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);
webRequest.KeepAlive = false;
webRequest.ProtocolVersion = HttpVersion.Version10;
return webRequest;
}
加上之后问题就在没有出现过。
如果问题还没解决欢迎联系我