Этот вопрос меня озадачил. Это происходило три раза за последние 12 месяцев на нашем производственном сервере и вызывает серьезные проблемы, когда это происходит. Любая помощь будет оценена.
У нас есть служба Windows .NET, которая отправляет HTTP-запросы на сторонний сервер. «Что-то» происходит, и следующие 2-3 запроса завершаются ошибкой с ошибкой 503 сервера, последующие запросы получают исключения тайм-аута. Звучит как проблема с сервером, верно? Однако если я наберу URL-адрес запроса в браузере, он вернет ответ.
Проблема решена путем перезапуска службы .NET, что теперь заставляет меня думать, что это проблема клиента, но я не могу придумать, как это сделать. Используется ли основное TCP-соединение с сервером повторно или кэшируется? Можно ли заставить .NET заново создать соединение?
Ниже приведен код веб-запроса.
public string GetResponseFromServer( string requestXML, string serverUrl, int Timeout )
{
System.Net.WebRequest req = System.Net.WebRequest.Create( serverUrl );
req.Method = "POST";
req.Timeout = Timeout;
byte[] requestBodyBytes = System.Text.Encoding.UTF8.GetBytes( requestXML );
req.ContentLength = requestBodyBytes.Length;
Stream newStream = req.GetRequestStream();
newStream.Write( requestBodyBytes, 0, requestBodyBytes.Length );
newStream.Close();
System.Net.WebResponse response = req.GetResponse();
StreamReader reader = new StreamReader( response.GetResponseStream() );
return reader.ReadToEnd();
}