Httpwebrequest.getResponse: «Базовое соединение было закрыто: на получении произошла неожиданная ошибка».
-
02-10-2019 - |
Вопрос
Я написал службу C # Windows (.NET Framework 3.5, C # 3.0), которые публикуют файлы и информацию о форме HTML на удаленный сервер, а затем сохраняет ответ XML-сервера в базе данных. Вот главный кусок соответствующего кода:
HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version10;
request.KeepAlive = false;
request.Timeout = 600000;
request.ReadWriteTimeout = 600000;
request.Method = "POST";
request.ContentType = contentType;
request.UserAgent = userAgent;
request.CookieContainer = new CookieContainer();
request.ContentLength = formData.Length;
using (Stream requestStream = request.GetRequestStream())
{
// Push it out there
requestStream.Write(formData, 0, formData.Length);
requestStream.Close();
}
return request.GetResponse() as HttpWebResponse;
Мой сервис работает правильно для всех небольших файлов, но я получаю следующую ошибку, когда я пытаюсь отправить большие файлы (8-9 МБ).
The underlying connection was closed: An unexpected error occurred on a receive.
Я посмотрел на исходящий запрос, используя Fiddler, и смог GLAN в следующую информацию:
HTTP/1.1 504 Fiddler - Receive Failure
Content-Type: text/html
Connection: close
Timestamp: 12:25:04.067
ReadResponse() failed: The server did not return a response for this request.
Ошибка возникает ~ 7 минут после того, как я звоню request.getResponse (). Отказ Есть ли способ идентифицировать, кто закрыл связь? И есть ли что-нибудь еще, что я должен попробовать на мой конец, чтобы решить эту проблему? Заранее спасибо!
Решение
Поскольку вы упоминаете его, работая на небольших файлах, но не больше, я бы предложил проверить размер загрузки файла MAX на сервере. Я считаю, что по умолчанию 4 МБ. http://support.microsoft.com/kb/295626.
Редактировать: заметил, что ссылка выше несколько устарела. Вот один для iis7: http://www.cyprich.com/2008/06/19/fixing-file-upload-size-limit-in-iis-7/