Соединение, которое должно было быть сохранено, было закрыто сервером в asp.net
Когда я пытаюсь перенаправить на следующую страницу, я получаю следующую ошибку
Примечание: Even the connection is open and it is fine.
Подключенное соединение было закрыто: соединение, которое, как ожидалось, было сохранено, было закрыто сервером. Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека, чтобы получить дополнительную информацию об ошибке и где она возникла в коде.
Сведения об исключении: System.Net.WebException
: базовое соединение было закрыто: соединение, которое должно было быть сохранено, было закрыто сервером.
Ошибка источника:
Необработанное исключение было создано во время выполнения текущего веб-запроса. Информация о происхождении и местоположении исключения может быть идентифицирована с использованием трассы стека исключений ниже.
Трассировка стека:
[WebException: The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.]
Effrtpartsigndone.Page_Load(Object sender, EventArgs e) +8196
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
Информация о версии: Microsoft.NET Framework Версия: 4.0.30319;
Версия ASP.NET: 4.0.30319.272
Ответы
Ответ 1
Эта запись MSDN, похоже, описывает аналогичную ситуацию. Сообщите нам, соответствует ли ваша проблема:
http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/246ffc07-1cab-44b5-b529-f1135866ebca/
Цитата:
[...].NET отправляет первый Expect 100 в один senddata сокета, а затем отправляет фактический запрос. Сервер отвечает с Continue 100. И именно здесь .Net показывает сообщение "Основное соединение было закрыто. Соединение неожиданно закрыто".
.Net находится под впечатлением, что он в любом случае уже отправил данные, но сервер отправил Connection: Close, чтобы он отображал ошибку без повторного запроса (sic) запроса.
Итак, решение для выше сказанного, которое работало для меня, было
System.Net.ServicePointManager.Expect100Continue = False
Если вы хотите увидеть трафик между прерываниями, отследите обмен HTTP с помощью Wireshark или аналогичный инструмент.
Ответ 2
Вероятно, это связано с тем, что время ожидания клиента больше, чем время ожидания сервера. Сервер закрывает соединение, и клиент все еще ждет ответа или отправки запроса.
Вы должны установить свойство KeepAlive равным False, чтобы соединение было закрыто само по себе и повторно открыто для каждого запроса. Это позволит избежать проблемы с попыткой использовать закрытое соединение.
Ответ 3
У меня было настроено:
ServicePointManager.DefaultConnectionLimit = 100;
Как только я удалил это, ошибки исчезли.
Ответ 4
У меня была такая же проблема и настройка в конфигурации сервера в элементе serviceBehaviors
<serviceBehaviors>
<behavior name="ServiceBehaviour">
...
<dataContractSerializer maxItemsInObjectGraph="6553500"/>
...
</behavior>
</serviceBehaviors>
решил проблему.
Трассировка помогает найти корень этих проблем: https://msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx
Ответ 5
У меня была такая же проблема при использовании библиотеки RestSharp. Я решил, добавив эти две строки перед созданием объекта RestClient:
ServicePointManager.DefaultConnectionLimit = 100;
ServicePointManager.MaxServicePointIdleTime = 5000;
Ответ 6
У нас был цикл на нашем объектном графе, который мы возвращали. Я знаю, что это, вероятно, не ваша проблема, но я добавляю ее здесь, если у кого-то другая проблема. Мы включили IncludeExceptionDetailInFaults
, но не получали ошибку в любом клиенте (наше приложение или тестовый клиент WCF). К счастью, он появился в журналах сервера, поэтому мы смогли найти его таким образом.
У нас были parent -> child
и child -> parent
для двусторонней навигации, нам пришлось сломать эту ссылку и вместо этого иметь parent -> child
, а у ребенка был идентификатор для поиска родителя, тогда ошибка исчезла.
Надеюсь, это поможет кому-то!
Ответ 7
В моем случае проблема связана с длиной файла . Проверьте разрешенный размер файла на своем сервере. В script просто проверьте эту часть:
dataStream.Write(filesBytesArray, 0, filesBytesArray.Length);
dataStream.Close();
И если вы не знаете, просто ограничьте размер загруженного файла в своем разделе интерфейса, т.е. HTML <input type="file">
элемент загрузки, это хорошая ссылка для ограничения размера файла и другого фильтра.