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

Microsoft ReportViewer: ошибки, закончившиеся сессией

Проект ASP.NET 2.0, я никогда не смог воспроизвести его сам, но я получаю сообщения электронной почты, сообщающие мне, что это происходит с клиентами много раз в неделю, часто несколько раз подряд.

Вот полная ошибка:

Сведения об исключении:

Microsoft.Reporting.WebForms.AspNetSessionExpiredException: сеанс ASP.NET истек

Трассировка стека:

[AspNetSessionExpiredException: сеанс ASP.NET истек]    в Microsoft.Reporting.WebForms.ReportDataOperation..ctor()    в Microsoft.Reporting.WebForms.HttpHandler.GetHandler()    в Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(контекст HttpContext)    в System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()    в System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, Boolean & завершен синхронно) Объекты сеанса: 75de8e1d65ff40d1ba666d940af5b118: Microsoft.Reporting.WebForms.ReportHierarchy 5210064be1fa4d6abf5dd5e56b262974: Microsoft.Reporting.WebForms.ReportHierarchy

4b9b3361

Ответ 1

У нас была та же проблема. До сих пор мы находили его только в том случае, когда сеанс истек, но они использовали кнопку "Назад" в браузере, который делает агрессивное кэширование, и это нормально. Но ReportViewer попытался обновить, хотя на главной странице этого не произошло. Итак, мы просто добавили хакерскую обработку ошибок Global.asax:

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);
    }
}

Ответ 2

Тайм-аут сеанса

Это может быть из-за слишком низкого таймаута сеанса. Просмотрите раздел "SessionState" вашего Web.Config, например.: -

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

Который установил бы время ожидания сеанса 60 минут.

Перезапуск пула приложений

Еще одна возможная причина, по которой мы столкнулись, заключается в том, что ваш пул приложений по какой-то причине перерабатывается.

В том случае, когда мы столкнулись с настройкой "Максимальная виртуальная память", я просто поднял это, и с тех пор все было хорошо.

Загляните в свой системный журнал событий для событий 1010, 1011, 1074, 1077, 1078, 1079, 1080 и 1117 из W3SVC и посмотрите, если ваш пул приложений перерабатывается, и если это так, он должен указать, почему.

Ответ 3

Вот мое исправление.

Запуск IIS на веб-ферме, и каждая ферма имеет счет веб-сада = 3 каждый,

Я просто создал отдельный пул приложений только для отчетов sql и установил этот счетчик веб-сайтов 1 только для этого пула отчетов.

затем создал виртуальный каталог в IIS и отдельный проект для отчетности - с использованием этого пула отчетов

проблема решена.

Ответ 4

У меня была эта проблема при разработке на моем собственном компьютере и я не мог найти ответ нигде в сети. Оказалось, что один из моих товарищей по команде добавил это в web.config:

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

Таким образом, web.config на рабочем столе разработчиков не должен иметь тег, и файлы DEV/QAS и Prod web.config должны иметь его.

Я также понимаю, что разработчики могут использовать IIS Express, а затем они могут использовать SSL локально.

Ответ 5

В чем вопрос? Сеанс истек, и они не могут продолжаться.

Проверьте скорость процесса отчета. Постройте какой-то бенчмарк или просто попросите их измерить обработку отчета.

Легко может быть, что он работает для вас, но не для них (медленная сеть, больше данных для обработки, более медленный сервер БД и т.д.).

Изменить: Вот еще одно объяснение и, возможно, решение проблемы, но я не рекомментирую чтобы установить номер рабочего процесса в 1 в среде procudtion.

Ответ 6

web gardern count=1 Работает для меня