Подтвердить что ты не робот

Соединение, которое должно было быть сохранено, было закрыто сервером в 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

4b9b3361

Ответ 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"> элемент загрузки, это хорошая ссылка для ограничения размера файла и другого фильтра.