2008-10-07 19 views
19

Projekt to ASP.NET 2.0, nigdy nie byłem w stanie tego odtworzyć, ale otrzymuję wiadomości e-mail informujące mnie, że zdarza się to klientom wielokrotnie w tygodniu, często kilka razy z rzędu.Microsoft ReportViewer: Błędy wygasły sesji

Oto pełna błędu: Szczegóły

Wyjątek:

Microsoft.Reporting.WebForms.AspNetSessionExpiredException: ASP.NET session has expired

ślad stosu:

[AspNetSessionExpiredException: ASP.NET session has expired] at Microsoft.Reporting.WebForms.ReportDataOperation..ctor() at Microsoft.Reporting.WebForms.HttpHandler.GetHandler() at Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) Session Objects:75de8e1d65ff40d1ba666d940af5b118: Microsoft.Reporting.WebForms.ReportHierarchy 5210064be1fa4d6abf5dd5e56b262974: Microsoft.Reporting.WebForms.ReportHierarchy

Odpowiedz

11

Mieliśmy ten sam problem. Do tej pory znaleźliśmy go dopiero po wygaśnięciu sesji, ale użyli przycisku wstecz w przeglądarce, która agresywnie buforuje, co jest w porządku. Ale ReportViewer próbował odświeżyć, mimo że strona główna nie. Więc, po prostu dodaje trochę hacky Global.asax obsługi błędów:

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception exc = Server.GetLastError().GetBaseException(); 
    if (exc is Microsoft.Reporting.WebForms.AspNetSessionExpiredException) 
    { 
     Server.ClearError(); 
     Response.Redirect(FormsAuthentication.LoginUrl + "?ReturnUrl=" + HttpUtility.UrlEncode(Request.Url.PathAndQuery), true); 
    } 
} 
+0

Próbowałem tego kodu w aplikacji asp.net mvc 2. ale ta metoda nie została wywołana. – loviji

+0

@loviji: W jaki sposób korzystasz z ReportViewer w MVC? Jest to formant WebForms ... Bez względu na to, Application_Error w Global.asax powinien działać dla wszystkich witryn ASP.Net. Sprawdź, jak poprawnie używać i konfigurować specjalną metodę Application_Error w środowisku ASP.NET - w Internecie jest dużo pomocy, jak to zrobić. –

+0

dzięki temu pomogło mi rozwiązać mój problem –

0

Jakie jest pytanie? Sesja wygasła i nie można kontynuować.

Sprawdź szybkość procesu raportowania. Wbuduj jakiś benchmark lub po prostu poproś ich o zmierzenie przetwarzania raportu.

Łatwo może być to, że działa, ale nie dla nich (wolniejsza sieć, więcej danych do obsługi, wolniejszy serwer DB, itd.).

Edit:Here is inny explanaition a może rozwiązanie tego problemu, ale ja nie polecam, aby ustawić liczbę procesów roboczych do 1 na środowisko procudtion.

3

Session Timeout

może to być spowodowane Twój limit czasu sesji jest zbyt niska. Sprawdź sekcję "sessionState" w swoim Web.Config, np. : -

<system.web><sessionState mode="InProc" timeout="60" /></system.web> 

Który ustawiłby limit czasu sesji na 60 minut.

Application Pool Recycle

Inna możliwa przyczyna, i jeden, który wpadliśmy, jest to, że pula aplikacji jest zawracany z jakiegoś powodu.

Na zewnątrz, ponieważ trafiliśmy w ustawienie "Maksymalna pamięć wirtualna", po prostu podniosłem to i wszystko było w porządku od tego czasu.

Zobacz dziennik zdarzeń systemowych dla zdarzeń 1010, 1011, 1074, 1077, 1078, 1079, 1080 i 1117 z W3SVC i sprawdź, czy pula aplikacji jest poddawana recyklingowi, a jeśli tak, to powinieneś podać przyczynę.

2

Oto moja poprawka.

Running IIS na farmie internetowej, a każde gospodarstwo ma liczbę ogród web = 3 każdy,

po prostu popełnił oddzielna pulę aplikacji tylko dla raportów SQL i ustawić, że Web gardern count = 1 tylko do tego zgłoszenia basen.

wtedy, wykonane katalogu wirtualnego w IIS oraz projekt oddzielna raportowania - korzystając że zgłoszenie basen

problem rozwiązany.

0

web gardern count=1 Works dla mnie

1

miałem ten problem przy opracowywaniu na moim komputerze i nie mógł znaleźć odpowiedź w dowolnym miejscu w sieci. Okazało się, że jeden z moich kolegów dodaje to do pliku web.config:

<httpCookies httpOnlyCookies="false" requireSSL="true" /> 

Więc web.config na pulpicie programisty nie powinny mieć znacznik i dev/QAS i Prod pliki web.config powinien ją mieć.

Rozumiem również, że deweloperzy mogą używać usług IIS Express, a następnie mogą używać SSL lokalnie.

Powiązane problemy