spi*_*ton 20 session reportviewer
该项目是ASP.NET 2.0,我自己从来没有能够重现这一点,但我收到的电子邮件告诉我,它每周发生在客户身上很多次,通常是连续几次.
这是完整的错误:
例外细节:
Microsoft.Reporting.WebForms.AspNetSessionExpiredException:ASP.NET会话已过期
堆栈跟踪:
[AspNetSessionExpiredException:ASP.NET会话已过期]在Microsoft.Reporting.WebForms.HttpHandler.GetHandler()上的Microsoft.Reporting.WebForms.ReportDataOperation..ctor()处于Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)at at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()在System.Web.HttpApplication.ExecuteStep(IExecutionStep一步,布尔和completedSynchronously)会话对象:75de8e1d65ff40d1ba666d940af5b118:Microsoft.Reporting.WebForms.ReportHierarchy 5210064be1fa4d6abf5dd5e56b262974:微软. Reporting.WebForms.ReportHierarchy
Jon*_*ams 13
我们遇到了同样的问题.到目前为止,我们只在会话到期时才找到它,但是他们在浏览器中使用了后退按钮来执行激进的缓存,这很好.但即使主页没有,ReportViewer也试图刷新.所以,我们刚刚添加了一些hacky 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);
}
}
Run Code Online (Sandbox Code Playgroud)