Microsoft ReportViewer:会话过期错误

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)

  • @loviji:您如何在 MVC 中使用 ReportViewer?它是一个 WebForms 控件...无论如何,Global.asax 中的 Application_Error 应该适用于所有 ASP.Net 站点。了解如何在 ASP.NET 中正确使用和设置特殊的 Application_Error 方法 — 网上有很多关于如何执行此操作的帮助。 (2认同)