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
Ответы
Ответ 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
Работает для меня