Asp.net ReportViewer正在阻止其他功能,直到报表查看器加载完成

Asp.net ReportViewer正在阻止其他功能,直到报表查看器加载完成,asp.net,.net,asp.net-mvc,reportviewer,Asp.net,.net,Asp.net Mvc,Reportviewer,这是ReportViewer控件: <form id="reportForm" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="360000"> </asp:ScriptManager> <div> <rsweb:ReportViewer ID="mainReportV

这是ReportViewer控件:

  <form id="reportForm" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="360000">
    </asp:ScriptManager>
    <div>
      <rsweb:ReportViewer ID="mainReportViewer" runat="server" Width="100%" 
            Height="100%" SizeToReportContent="True"  >
      </rsweb:ReportViewer>
    </div>
  </form>
当我尝试查看报告(asp.net mvc中的一个视图)时,它会在一个新选项卡中打开以查看报告(这是带有代码文件的aspx页面),而如果我尝试从上一个选项卡打开任何链接,则在新选项卡中的报告完全加载之前,页面不会加载。我什么都试过了,但还没有找到解决办法。需要帮助吗

也就是说,如果我试图打开上一个选项卡中的任何链接,直到新选项卡中的报告完全加载,页面才会加载

您需要分析您的应用程序。您的请求很可能已排队,试图为用户的会话状态获取写锁

您可以阅读有关此问题的更多信息:

为了防止两个页面同时修改进程内会话变量,ASP.NET运行时使用锁。当对读取和写入会话变量的页面的请求到达时,运行时将获取一个writer锁writer锁将阻止同一会话中可能写入同一会话变量的其他页面。

我的

为了缓解这种情况

但是,请注意不要意外地选择了错误类型的会话状态(已启用、已禁用、只读)。您的应用程序需要正确设置才能正常工作。

您能试试吗

System.Threading.Thread thLoadReport = new System.Threading.Thread(new System.Threading.ThreadStart(LoadReport));
thLoadReport.Start();

private void LoadReport()
{
    // Invoke necessary controls here for eg.
    mainReportViewer.Invoke((MethodInvoker)delegate {
        // your report loading here
    });
}

如果您需要更多帮助,请告诉我。

由于ReportViewer用户的会话状态持续存在,因此它使用了一个锁来阻止页面加载。我采用的解决问题的方法是:

  • 创建
    并实现
    IReportServerConnection2
    接口

  • add key=“ReportViewerServerConnection”value=“MyNamespace.MyClass,MyAssembly,Version=1.0.0.0,Culture=neutral,PublicKeyToken=00000000000000000”/>

    中的
    web.config
    文件中,这是否被错误标记为mvc问题?Runat:服务器和代码隐藏不是mvc框架的一部分。正如我前面提到的,aspx页面添加到我的mvc项目中。查看报告的链接位于mvc查看页面中,报告本身通过aspx页面打开,以使用报告查看器控件。简言之,我的mvc应用程序中集成了一个aspx/aspx.cs页面来查看报表禁用或readonly无法使用报表查看器。它没有获取数据和错误您无法禁用它,因为您使用它:
    如果(会话[“UserInfo”]==null)如我所说,不要选择错误的类型。那么如何进一步?加载报告需要时间,而加载其他链接则会被阻止,直到报告完成。我的应用程序是在asp.net MVC中开发的,但报告部分是使用aspx/aspx.cs页面创建的。我解决了问题,找到了一些要点。您认为这个由报表查看器自动生成的javascipt可能导致了这个问题吗?有很多javascript是这样的:通过分析,你的意思是改变应用程序?我有点陷入其中,不知道如何继续。这些应用程序将显示您的网站在哪里花费时间,这将确认您是否在会话状态方面有问题简要教程:没有调用方法w.r.t mainReportViewer
    
    System.Threading.Thread thLoadReport = new System.Threading.Thread(new System.Threading.ThreadStart(LoadReport));
    thLoadReport.Start();
    
    private void LoadReport()
    {
        // Invoke necessary controls here for eg.
        mainReportViewer.Invoke((MethodInvoker)delegate {
            // your report loading here
        });
    }