关闭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显示为打开。
答
CLOSE WAIT状态表示服务器从客户端接收到一个TCP-FIN(即被动关闭),服务器必须关闭其套接字(向客户端发送TCP-FIN)才能获得服务器套接字CLOSE WAIT状态。所以这可能不一定是客户端的问题,而是服务器端不能正确关闭的服务器端。
它在客户端看起来像什么? FIN-WAIT-1或FIN-WAIT-2可能表明这可能是问题。
你的使用块与在问题中手动调用Dispose()有什么不同? – andynormancx 2009-01-30 13:45:06
如果此行引发异常,则可能永远不会调用dispose: string [] SOAPReturnResult = Soap.DepotData(100,“Test”); – 2009-01-30 13:51:17