关闭SOAP连接

关闭SOAP连接

问题描述:

我已经将肥皂连接到服务器,并且服务器似乎不会丢失该连接,在netstat中连接的状态被列为CLOSE WAIT。关闭SOAP连接

我被告知创建soap连接的客户端必须向服务器发送命令来关闭连接。任何人都可以告诉我在C#中执行此操作的正确方法吗?下面是一段代码示例。

SOAPServer.Service Soap = new SOAPServer.Service(); // SOAPServer is a web reference 
Soap.Timeout = 30000; 
string[] SOAPReturnResult = Soap.DepotData(100, "Test"); 
Soap.Dispose(); 

将其包装在使用块中。

using (SOAPServer.Service Soap = new SOAPServer.Service()) 
{ 
Soap.Timeout = 30000; 
string[] SOAPReturnResult = Soap.DepotData(100, "Test"); 
} 

请注意,这只会标记连接已关闭。即使在连接关闭后的一段时间内,它仍可能通过netstat显示为打开。

+0

你的使用块与在问题中手动调用Dispose()有什么不同? – andynormancx 2009-01-30 13:45:06

+0

如果此行引发异常,则可能永远不会调用dispose: string [] SOAPReturnResult = Soap.DepotData(100,“Test”); – 2009-01-30 13:51:17

CLOSE WAIT状态表示服务器从客户端接收到一个TCP-FIN(即被动关闭),服务器必须关闭其套接字(向客户端发送TCP-FIN)才能获得服务器套接字CLOSE WAIT状态。所以这可能不一定是客户端的问题,而是服务器端不能正确关闭的服务器端。

它在客户端看起来像什么? FIN-WAIT-1或FIN-WAIT-2可能表明这可能是问题。