SSRS ReportViewer混淆了请求

问题描述

我们有ASP.NET MVC应用程序,该应用程序显示连接到我们的SSRS服务器的ReportViewer插件。我们最近看到了一些实例,其中两个不同的用户请求两个不同的报告,但最终都看到相同的报告。一个用户获取他们请求的报告,而另一用户没有获取他们请求的报告,而是获取一个用户请求的完全相同的报告。如果两个用户几乎完全同时发出请求,就会发生这种情况。此外,我们确定SSRS服务器在相隔几毫秒之内就看到了两个相同的请求。这表明第二个请求在C#应用程序中以某种方式丢失,并且永远不会发送;仅一个请求发送两次。下面是我们的代码

也需要澄清一些事情。我们在数据库中查找以获取模板名称的模板ID。 SSRS服务器的用户名和密码是一个帐户,用作我们应用程序的服务帐户,与该用户无关。关于参数,您可以看到所有报告都需要从会话中提取的案例ID和从声明中创建的对象提取用户ID。

鉴于SSRS日志显示了两个重复的请求,因此它似乎根本不在SSRS一侧。并且由于它是两个不同的用户,不同的工作站等,因此它似乎不是任何缓存问题。当然,这段代码似乎是专门针对某些事情的,但是我对如何发生这种情况感到困惑。任何想法都很感激。

    private ReportViewer GetReportViewerForLetterTemplate(int letterTemplate)
    {
        ReportViewer rptViewer = new ReportViewerModel
        {
            ProcessingMode = ProcessingMode.Remote,SizetoReportContent = true,ZoomMode = ZoomMode.PageWidth,Width = Unit.Percentage(100),Height = Unit.Pixel(1000),AsyncRendering = true,};
        FileTemplate fileTemplate = CaseFileManager.GetLetterTemplateByID(letterTemplate);
        rptViewer.ServerReport.ReportPath = fileTemplate.ReportPath;
        rptViewer.ServerReport.reportserverUrl = new Uri(fileTemplate.reportserverURL);
        rptViewer.KeepSessionAlive = false;
        rptViewer.ShowPrintButton = true;
        IreportserverCredentials irsc = new CustomreportCredentials("user","pass","domain");
        rptViewer.ServerReport.reportserverCredentials = irsc;

        List<Microsoft.Reporting.WebForms.ReportParameter> parameters = new List<Microsoft.Reporting.WebForms.ReportParameter>();

        parameters.Add(new Microsoft.Reporting.WebForms.ReportParameter("CaseID",this.Session["IndexCaseId"].ToString(),false));

        parameters.Add(new Microsoft.Reporting.WebForms.ReportParameter("UserID",this.userState.UserID.ToString(),false));

        rptViewer.ServerReport.Timeout = 20 * 60 * 1000; // in milliseconds
        rptViewer.ServerReport.SetParameters(parameters);
        return rptViewer;
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)