gpt4 book ai didi

reporting-services - SSRS 报表查看器 - 报表图表无法在 IE11 中显示

转载 作者:行者123 更新时间:2023-12-05 01:01:37 25 4
gpt4 key购买 nike

我有一个显示仪表板样式报告的报告查看器控件。
它有一些图表可以提供概述,但是在 IE11 中查看时,报告根本不会呈现,只是显示为空白。
底层存储过程也在运行。

我做了一些测试和

  • 图表在 Firefox 中显示(当前)
  • 图表显示在 Chrome 中(当前)
  • 图表以 IE 兼容模式显示。
  • 如果我在 Web 查看器上使用 PDF 导出功能,它能够将原始字节流转换为带有图表的正确 PDF,这意味着报告运行正常。最初尝试显示报告时,底层存储过程仅运行一次。

  • 我不确定这是否是 IE 如何与 webviewer 控件交互的问题。

    更新 - 借助 Fiddler 的魔力,在请求空白.gif 时,看起来错误被吃掉并且未显示,这似乎是我相信的结果 gif 的占位符。
    URL 中缺少 IterationId。
    奇怪的是,在查看 FireFox 和 Chrome 的 Fiddler 跟踪结果时,会出现关于 URL 中缺少 IterationId 的相同错误,但图表仍然显示。我假设这仍然是问题。

    请求头
    GET /Reserved.ReportViewerWebControl.axd?ReportSession=....&Culture=1033
    &CultureOverrides=True&UICulture=1033&UICultureOverrides=True
    &ReportStack=1&ControlID=...
    &OpType=ReportImage&ResourceStreamID=Blank.gif HTTP/1.1

    文本共鸣
    [HttpHandlerInputException: Missing URL parameter: IterationId]
    Microsoft.Reporting.WebForms.HandlerOperation.GetAndEnsureParam(NameValueCollection urlQuery, String paramName) +104
    Microsoft.Reporting.WebForms.ReportImageOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response) +102
    Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context) +380
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171

    最佳答案

    缺少的 IterationId 帮助我找到了类似的场景。 IterationId 在 IE11 中会像在 Chrome 和 Firefox 中一样失败,这是有道理的,因为 IE11 将自己引入为 Mozilla 客户端。 “用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) 像 Gecko”

    根据 Devin Steinke 在 SQL Reporting Services - Viewer broken in Non-IE Browsers 上的这篇文章

    在后面的 Global.asax 代码中,我仅在 ReportViewerWebControl blank.gif 请求上附加 IterationId 参数。
    它现在可以在 IE11 中运行,并且仍然可以在 FireFox、Chrome 和旧版本的 IE 中运行。

    您不会再看到 fiddler 的异常,结果文本显示 GIF 的检索,在我的例子中是“GIF89a”。

    VB.NET :

    Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim pathQuery = HttpContext.Current.Request.Url.PathAndQuery
    Dim url = HttpContext.Current.Request.Url.ToString().ToLower()

    If pathQuery.StartsWith("/Reserved.ReportViewerWebControl.axd") And Not url.Contains("iteration") Then

    Dim resourceStreamId = HttpContext.Current.Request.QueryString("ResourceStreamId")

    If IsNothing(resourceStreamId) Then Return

    If resourceStreamId.ToString().Equals("blank.gif", StringComparison.InvariantCultureIgnoreCase) Then
    Context.RewritePath(String.Concat(HttpContext.Current.Request.Url.PathAndQuery, "&IterationId=0"))
    End If

    End If
    End Sub

    C# :

    void Application_BeginRequest(object sender, EventArgs e)
    {
    // Bug fix for MS SSRS Blank.gif 500 server error missing parameter IterationId
    // https://connect.microsoft.com/VisualStudio/feedback/details/556989/
    if (HttpContext.Current.Request.Url.PathAndQuery.StartsWith("/Reserved.ReportViewerWebControl.axd") &&
    !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString["ResourceStreamID"]) &&
    HttpContext.Current.Request.QueryString["ResourceStreamID"].ToLower().Equals("blank.gif"))
    {
    Context.RewritePath(String.Concat(HttpContext.Current.Request.Url.PathAndQuery, "&IterationId=0"));
    }
    }

    关于reporting-services - SSRS 报表查看器 - 报表图表无法在 IE11 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28049691/

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