2011-02-08 86 views
2

从我的WinForms应用程序中,我必须调用Web服务,并使用Web引用。到目前为止没有问题,但现在我有一个使用位于负载平衡器后面的代理背后的软件的客户端。如何关闭Web服务调用的持久连接

Webservice调用正常,但两分钟后失败。我们可以通过反复调用一个间隔少于两分钟的web服务来解决这个问题。

我发现负载平衡器会在两分钟内不使用tcp会话时断开连接,显然这是我们的情况,软件无法恢复。

如何告诉gerenated web引用为每个Web服务调用使用新的tcp连接?

+0

你处置代理的通话对象之间吗? – e36M3 2011-02-08 13:28:48

回答

1

如果重写代理的GetWebRequest方法,那么你可以设置KeepAlive属性:

public override WebRequest GetWebRequest(Uri uri) 
{ 
    HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri); 
    request.KeepAlive = false; 
    return request; 
} 
+0

我可以关闭webrequest上的KeepAlive,但我不断看到代理连接:Keep-Alive在标题中。 – 2011-02-08 14:16:24