asp.net – ReportViewer阻止其他功能,直到报告查看器的加载完成

发布时间:2020-02-14 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了asp.net – ReportViewer阻止其他功能,直到报告查看器的加载完成脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是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>

这是页面背后的代码:

protected void Page_Load(object sender,EventArgs e)
{
    if (Session["UserInfo"] == null)
    {
        Response.Redirect("~/account/login",true);
    }
    string ReportPath = "";
    try
    {
        if (mainReportViewer.Page.IsPostBack) return;

        mainReportViewer.ProcessingMode = ProcessingMode.Remote;

        mainReportViewer.ServerReport.ReportServerUrl = new Uri(
            @"" + ConfigurationManager.AppSettings["ReportServer"].ToString()
        );
        ReportPath = Convert.ToString(ConfigurationManager.AppSettings["ReportPath"]);
        if (!string.IsNullOrEmpty(ReportPath))
        {
            if (ReportPath.Substring(0,1) == "/")
            {
                ReportPath = ReportPath.Substring(1,ReportPath.Length - 1);
            }
            if (ReportPath.Substring(ReportPath.Length - 1,1) != "/")
            {
                ReportPath = ReportPath + '/';
            }
        }
        else
        {
            ReportPath = "";
        }
        ReportPath = ReportPath + Request["Report"].ToString().Split(".".ToCharArray())[0].ToString();
        mainReportViewer.ServerReport.ReportPath = @"/" + ReportPath;

        ReportParameterCollection parmCol = new ReportParameterCollection();
        string sFrom = "";
        string sTo = "";
        string dateRange = Request["dateRange"].ToString();
        string[] obj = dateRange.Split("-".ToCharArray());
        if (obj.Length > 1)
        {
            sFrom = obj[0].ToString();
            sTo = obj[1].ToString();
        }
        else
            sFrom = obj[0].ToString();
        else if (Request["Report"].ToString().ToUpper() == "SOURCEWISEREPORT_AR.RDL")
        {
            string[] frommonthyear = sFrom.Split(',');
            string[] tomonthyear = sTo.Split(',');

            parmCol.Add(new ReportParameter("FromYear",frommonthyear[1]));
            parmCol.Add(new ReportParameter("FromMonth",frommonthyear[0]));
            parmCol.Add(new ReportParameter("ToYear",tomonthyear[1]));
            parmCol.Add(new ReportParameter("ToMonth",tomonthyear[0]));
            parmCol.Add(new ReportParameter("lang",Convert.ToString(Session["Culture"])));
        }
        mainReportViewer.PromptAreaCollapsed = true;
        mainReportViewer.AsyncRendering = true;
        mainReportViewer.ServerReport.Timeout = System.Threading.Timeout.Infinite;
        mainReportViewer.ServerReport.SetParameters(parmCol);
        mainReportViewer.ShowParameterPrompts = true;
        mainReportViewer.LocalReport.EnableHyperlinks = true;
        mainReportViewer.ServerReport.Refresh();
    }
    catch (Exception ex)
    {
        CommonFunctions.createLog("Reports : " + ex.Message);
    }
}

当我尝试查看报告(这是asp.net mvc中的视图)时,它会在新选项卡中打开以查看报告(这是带有代码文件的aspx页面),并且如果我尝试打开上一个选项卡中的任何链接,则表示在完全加载新选项卡中的报表之前,页面不会加载.我尝试了所有事情,但尚未找到解决方案.需要帮忙

解决方法

mean while if i try to open any link from the previous tab the page doesn’t get loaded until the report in the new tab is completely loaded

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

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

To prevent two pages from modifying in-process Session variables at the same time,the ASP.NET runtime uses a lock. When a request arrives for a page that reads and writes Session variables,the runtime acquires a writer lock. The writer lock will block other pages in the same Session who might write to the same session variables.

强调我的.

为了缓解这种情况,you can enable or disable session state for individual pages,or declare your usage of session state as “read only”.

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

总结

以上是脚本之家为你收集整理的asp.net – ReportViewer阻止其他功能,直到报告查看器的加载完成全部内容,希望文章能够帮你解决asp.net – ReportViewer阻止其他功能,直到报告查看器的加载完成所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。

脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ” ,选择关注!
精选程序员所需精品干货内容!

标签: