gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:04:32 36 4
gpt4 key购买 nike

这是 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 中的一个 View )时,它会在一个新选项卡中打开以查看报告(这是带有代码文件的 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



您需要分析您的应用程序。很可能您的请求已排队尝试获取用户 session 状态的写锁定。

您可以阅读有关该问题的更多信息 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" .

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

关于asp.net - ReportViewer 正在阻止其他功能,直到报表查看器的加载完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29985689/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com