2012-12-27 24 views
19

Kiedy próbuję przekierować do następnej strony, pojawia się następujący błądpołączenie, które spodziewano się być utrzymywane przy życiu zostało zamknięte przez serwer w ASP.NET

Uwaga:Even the connection is open and it is fine.

The underlying connection was closed: A connection that was expected to be kept alive was closed by the server. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Net.WebException : The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.

błąd Źródło:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Śledzenie stosu:

[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 

Informacje o wersji: Microsoft .NET Framework Wersja: 4.0.30319;

ASP.NET Version: 4.0.30319.272

+1

Page ** Kod źródłowy ** pls –

Odpowiedz

7

Ten post MSDN wydaje się opisać podobną sytuację. Daj nam znać, jeśli pasuje do Twojego problemu:

http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/246ffc07-1cab-44b5-b529-f1135866ebca/

Cytat:

[...].Net is sending first Expect 100 in one senddata of socket then send the actual request. Server Responds back with Continue 100. And exactly here .Net is showing message "Underlying connection was close. Connection was closed unexpectedly".

.Net is under impression that it has anyway already sent the data but server sent Connection : Close so it shows error without resending(sic) the request.

So the solution for the above that worked for me was

System.Net.ServicePointManager.Expect100Continue = False 

Jeśli chcesz zobaczyć ruch pomiędzy intruzów, snoop wymianę HTTP z Wireshark lub podobnego narzędzia.

+0

: To nie jest mój case.Anyway, dzięki za odpowiedź. – MahaSwetha

2

miałem to skonfigurowane:

ServicePointManager.DefaultConnectionLimit = 100; 

Raz usunięta że błędy odszedł.

0

Mieliśmy pętlę na naszym wykresie obiektowym, który zwracaliśmy. Wiem, że to nie jest twój problem, ale dodaję go tutaj, na wypadek, gdyby ktoś inny miał ten sam problem. Włączyliśmy IncludeExceptionDetailInFaults, ale nie otrzymaliśmy błędu w żadnym kliencie (naszej aplikacji lub kliencie testowym WCF). Na szczęście pojawił się w dziennikach serwera, więc udało nam się go znaleźć w ten sposób.

Mieliśmy parent -> child i child -> parent dla dwukierunkowej nawigacji, musieliśmy przerwać ten link i zamiast mieć parent -> child, a dziecko miało id do Lookup rodzica, wówczas błąd odszedł.

Mam nadzieję, że to pomoże komuś!

1

miałem ten sam problem i ustawienie w konfiguracji serwera w elemencie serviceBehaviors

<serviceBehaviors> 
    <behavior name="ServiceBehaviour"> 
     ... 
     <dataContractSerializer maxItemsInObjectGraph="6553500"/> 
     ... 
    </behavior> 
</serviceBehaviors> 

rozwiązać ten problem.

Tracing bardzo pomaga w znalezieniu korzeń tych problemów: https://msdn.microsoft.com/en-us/library/ms733025(v=vs.110).aspx

0

W moim przypadku problem jest w długości plików. Proszę sprawdzić dozwolony rozmiar pliku na serwerze. W swoim skrypcie po prostu sprawdź tę część:

dataStream.Write(filesBytesArray, 0, filesBytesArray.Length); 
dataStream.Close(); 

A jeśli nie wiesz, po prostu ogranicz rozmiar przesłanego pliku w sekcji frontendowej, tj.Element przesyłania HTML: , to jest good reference for limiting file size and other filter.

5

Jest tak prawdopodobnie dlatego, że czas oczekiwania klienta jest dłuższy niż limit czasu serwera. Serwer zamyka połączenie, a klient wciąż czeka na odpowiedź lub wysłanie żądania.

Musisz ustawić właściwość KeepAlive na False, aby połączenie zostało automatycznie zamknięte i ponownie otwarte dla każdego żądania. Pozwoli to uniknąć problemu przy próbie użycia zamkniętego połączenia.

1

Miałem ten sam problem podczas korzystania z biblioteki RestSharp. I rozwiązać dodając te dwie linie przed utworzeniem obiektu RestClient:

ServicePointManager.DefaultConnectionLimit = 100; 
ServicePointManager.MaxServicePointIdleTime = 5000; 
Powiązane problemy