0

我目前正在开发一个大型 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 错误图标,更糟糕的是,在使用动态渲染的情况下,“渲染报告”进度轮只是动画并且从不提供报告。

以前有没有人见过这个,如果有,你是怎么解决的?

谢谢,托尼

4

2 回答 2

0

通常,要让 SSRS Web 部件在 SharePoint 中运行,您需要启用 Kerberos,如果您想传递相同的报告(使用相同的安全上下文),您需要授予您的 SharePoint 应用程序池帐户权限以检索/运行报告. 您也可以考虑在“集成”模式下安装 SSRS,但这是一个相当困难的过程,因为 sql server 需要将 SharePoint 作为另一个场成员托管,并且完全安装了 SharePoint。

于 2009-10-25T02:05:58.790 回答
0

根据这篇博客文章,我最终通过使用子框架解决了这个问题:

http://www.deepcode.co.uk/2009/11/overcoming-cross-domain-issues-between.html

于 2009-11-16T15:58:17.650 回答