<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.
强调我的.
注意不要意外选择错误类型的会话状态,但是(启用,禁用,只读).需要正确设置才能使应用程序正常工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。