bla*_*k3r 7 .net wse keep-alive webservice-client wse3.0
在HTTP Connection标头中,我的Web服务客户端包括:
Connection: Keep-Alive
我想禁用它. 在做了一些研究之后,看来这样做的方法是将SoapHttpChannelOptions类的KeepAlive成员设置为false.但是,我没有看到SoapHttpChannelOptions使用WSE3.0(Web服务增强)在Visual Studio中为我生成的Web服务客户端类中访问/修改的方法.
在我的例子中,生成的存根类扩展 Microsoft.Web.Services3.WebServicesClientProtocol
我一直无法找到任何搜索谷歌的例子,SoapHttpChannelOptions类的大多数成员都被继承到WebServicesClientProtocol类......
SoapHttpChannelOptions参考
WebServicesClientProtocol Reference
注意:我不是要修改Web服务器.我正在尝试修改Web服务客户端.
bla*_*k3r 12
一种解决方案是覆盖该GetWebRequest(Uri uri)方法.
在这个MSDN论坛帖子上找到了引导我找到这个解决方案的信息
将此代码段粘贴到自动为您生成的Reference.cs文件中.这种方法的缺点是,如果您重新生成Web服务客户端适配器(即更新Web引用),则必须再次修改该文件.
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)base.GetWebRequest(uri);
webRequest.KeepAlive = false;
return webRequest;
}
Run Code Online (Sandbox Code Playgroud)
创建一个文件并将以下代码粘贴到其中.修改名称空间和类名,使它们与您的Web服务匹配.
namespace YourNamespace
{
using System.Diagnostics;
using System.Web.Services;
using System.ComponentModel;
using System.Web.Services.Protocols;
using System;
using System.Xml.Serialization;
/// <summary>
/// This partial class makes it so all requests specify
/// "Connection: Close" instead of "Connection: KeepAlive" in the HTTP headers.
/// </summary>
public partial class YourServiceNameWse : Microsoft.Web.Services3.WebServicesClientProtocol
{
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)base.GetWebRequest(uri);
webRequest.KeepAlive = false;
return webRequest;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不使用WSE,此方法可能有效.我能够将上面的方法粘贴到非WSE webservice类...扩展System.Web.Services.Protocols.SoapHttpClientProtocol.从我的测试看来,这使得它不包括任何Http连接线,就像我在WSE类(它是派生的Microsoft.Web.Services3.WebServicesClientProtocol)里面做的那样它然后包括一个"Connection:Close"线.根据HTTP KeepAlive上的这个网站:
在HTTP 1.1下,官方的keepalive方法是不同的.除非另有说明,否则所有连接都保持活动状态:连接:关闭
所以,虽然它可能不再在标题中包含KeepAlive ......我认为在HTTP1.1中它被认为是默认值.
| 归档时间: |
|
| 查看次数: |
11025 次 |
| 最近记录: |