我是开发使用 AngularJS 和 SSRS 报告的自定义 SharePoint 应用程序的团队的一员。基本上,该应用程序允许用户选择一个报告,选择一组参数,然后在站点/应用程序中查看报告。
一切正常,直到我们打开报告工具栏。此时,报表停止呈现。只有工具栏可见。
这是我们正在做的事情:
显示报告的应用程序部分的 html:
<section class="left-panel report-view-panel ssrsReport show">
<h1>{{CurrentReport.Title}}</h1>
<button class="btn-report-close" ng-click="closeReport()" type="button">Close</button>
<div class="scroll-list">
<figure class="report">
<div class="sample-report">
<div ng-include='CurrentReportURL'></div>
</div>
</figure>
</div>
</section>
在控制器 javascript 中,我们将报表服务器 url (CurrentReportURL) 构建为如下所示:
我们告诉它呈现报告、隐藏工具栏和隐藏参数选择。这工作正常。报告按预期呈现。
但是,将 url 更改为:
仅导致工具栏呈现。没有报告。如果我复制相同的 url 并在浏览器窗口中打开它,报告将按预期呈现。
我挖得更深一点,并使用 Chrome 和 Chrome 的开发者工具网络选项卡查看了这两种情况。ng-include 中的 url 和浏览器窗口中的 url 之间的调用存在一些差异。然而,最突出的是一个到 RSViewerPage.aspx 的 POST,其中所有报表查看器和报表参数都转换为适当的 ReportViewer 参数。(我会发布该实际链接,但 SO 告诉我,我需要 10 的声誉才能做到这一点)。
我在 Chrome 和 IE10 中得到了相同的结果。
我正在寻找一些关于为什么 ng-include 版本没有发布 POST 的指导?我相信这个 POST 与仅使用工具栏跟踪的 SSRS 会话有关,但我真的不确定。
任何指导将不胜感激!