Закрытие SOAP-соединения - PullRequest
0 голосов
/ 30 января 2009

Я установил мыльное соединение с сервером, и сервер, кажется, не прерывает это соединение, в netstat статус соединения указан как ЗАКРЫТЬ ЖД

Мне сказали, что клиент, создавший соединение soap, должен отправить команду серверу на закрытие соединения. Может кто-нибудь сказать мне правильный способ сделать это в C #? Ниже приведен пример кода.

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

Ответы [ 2 ]

0 голосов
/ 30 января 2009

Состояние ЗАКРЫТЬ ОЖИДАНИЕ означает, что сервер получил TCP-FIN от вашего клиента (т.е. пассивное закрытие), сервер должен закрыть свой сокет (отправить TCP-FIN клиенту), чтобы вытащить сокет сервера из ЗАКРЫТЬ ПОДОЖДИТЕ. Так что это может не являться проблемой на стороне клиента, но на стороне сервера, где сокет сервера закрывается неправильно.

Как это выглядит на стороне клиента? FIN-WAIT-1 или FIN-WAIT-2 могут указывать, что это может быть проблемой.

0 голосов
/ 30 января 2009

Оберните его в блок использования.

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

Обратите внимание, что это только помечает соединение как закрытое. Он может все еще отображаться как открытый через netstat даже в течение небольшого времени после закрытия соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...