【发布时间】:2009-11-16 23:58:17
【问题描述】:
我目前正在开发一个大型 Intranet mashup,它使用 sharepoint 来聚合来自其他几个内部服务器的内容,例如:
- moss.myapp.internalserver.local - MOSS 门户
- ssrs.myapp.internalserver.local - SQL Server 报告服务报告
- app.myapp.internalserver.local - 自定义 ASP.NET MVC 表单
moss 门户使用 jQuery 对话框中的 iframe 调用 MVC 表单(准确地说是四四方方),然后使用 javascript 回调到 moss 页面以执行各种操作,包括关闭 jQuery 对话框。
这显然会使浏览器上的同源策略失败(因此不允许 javascript 从不同来源调用框架/窗口),因此我通过设置 document.domain = "myapp.internalserver. local”在 MOSS 母版页和应用程序表单页面中,允许跨域脚本在 moss 和应用程序内容之间正常运行。
所以,这很好用,直到我使用报表查看器 Web 部件(sharepoint 的默认部件,以及一些第三方的,包括我自己的,它们只使用 ASP.NET 报表查看器组件)将 SSRS 报表添加到组合中.
报表查看器似乎需要一个将 html 返回到页面中的处理程序。但是,生成的报告查看器内容似乎会渲染并编写脚本到某些 iframe 中,但它没有为我们提供任何在这些 iframe 上设置 document.domain 的方法,因此脚本失败。
这意味着我们会在状态栏中看到黄色的小 javascript 错误图标,更糟糕的是,在使用动态渲染的情况下,“渲染报告”进度轮只是动画并且从不提供报告。
以前有没有人见过这个,如果有,你是怎么解决的?
谢谢, 托尼
【问题讨论】:
标签: sharepoint reporting-services cross-domain reportviewer2008