CSharp - ReportViewer IE 11

  显示原文与译文双语对照的内容
0 0

我有一个页面在我3 .5 framework web forms网站显示报告。 它是使用Report Viewer 10 .0 .0 .0 。 报告每个浏览器的渲染但IE11 。 只报告中显示信息的单据类型格式呈现为html表和存储在rdl文件。 param框中加载,但从选中报表时,跑只是看到loading gif和它超时。 我试着排除与IE11开发工具和测试超时时打开这真是完美风暴来了 其他一些信息我在本地运行网站在VS2012和IE11呈现的报表却只要不是在IIS7服务器。

我试过自定义browser文件来模拟IE10运气不好在那里。 任何帮助将appriciated也许仅仅知道我不是唯一一个 。?

updATE : 我发现我的服务器日志中的异常。 httpHandlerInputException,缺少URL参数: iterationId 。

感谢你提前。

时间:原作者:8个回答

0 0

发现它在url中列出的注释。 我竟残废这是microsoft冒出一个新的浏览器,当它们不测试我们所做的一切。

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"));
    }
}
原作者:
0 0

我有问题,但也IE11 ReportViewer 10 。

升级到ReportViewer 11 ( SQL Server 2012 ) 解决了我的问题。

  • 下载并安装MICROSOFT® Report Viewer 2012 RUNTIME : http://www .microsoft .com/en us/download/confirmation aspxid=35747

  • 转到GAC文件夹: c:Windowsassemblygac_msil

  • 找到Microsoft .ReportViewer dll就安装。

  • 复制Microsoft .ReportViewer .Common dll和Microsoft .ReportViewer .webForms dll文件复制到本地web文件夹。

  • 在解决方案中引用,删除所有旧引用旧从ToolBox ReportViewer版本,删除在web config中和其他文件的引用,并且移除控件。

  • 添加新的( 一般和web forms ) dll引用。

  • 将其属性设置为复制到本地( 复制到bin文件夹中) 。

  • 右键单击Toolbox和ReportViewer 11控件添加( add Microsoft .ReportViewer .webForms dll参考)

  • 将该控件放置在页面上。

  • 这将添加web config文件和页面文件中的引用。 在程序集:

    <add assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
    <add assembly="Microsoft.ReportViewer.Common, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91"/>
  • 你还需要在web config文件中添加2 个额外的条目:

配置,系统状态web下httphandlers :

<
add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />

在配置下,系统.webserver:

<
add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </handlers>    
  </system.webServer>

注: 此为我工作,不添加任何Application_BeginRequest方法中。 另外,我尝试安装或不兼容元标记,它可以用在两个方面。

原作者:
0 0

通过@vikingben答案也是我的答案的基础,但我想给的解决方案利用IIS重写规则,看过的读者不能轻松更改全局。asax c .q 。 应用程序BeginRequest 。 这是我的规则:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="ReportViewerFix" patternSyntax="ECMAScript" stopProcessing="true">
        <match url="(.*)Reserved.ReportViewerWebControl.axd(.*)" ignoreCase="true" />
        <action type="Redirect"
                redirectType="Temporary"
                url="{R:1}/Reserved.ReportViewerWebControl.axd?IterationId=0"
                appendQueryString="true" />
        <conditions>
          <add input="{QUERY_STRING}" pattern="ResourceStreamID=Blank.gif" />
          <add input="{QUERY_STRING}" pattern="IterationId=0" negate="true" />
         </conditions>
      </rule>
    </rules>
  </rewrite>
</system.webServer>

是这样工作的。 它找到所有URLs :

  1. 匹配特定的regex寻找ReportViewer axd也;
  2. 查询字符串包含" resourcestreamid=blank gif也" ;
  3. "查询字符串绝不是包含" iterationid=0 " 。

对于任何浏览器会重定向匹配( " 临时",但也可以使用其他状态码) :

  1. 相同的axd的url ;
  2. 追加" iterationid=0 " ;
  3. 原始查询也strign追加。
原作者:
...