微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSRS ReportViewer混淆了请求

如何解决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 举报,一经查实,本站将立刻删除。