【问题标题】:SSRS Report viewer in sharepoint with document.domain setSSRS Report viewer in sharepoint with document.domain set
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 已经让服务器等相互通信正常,并且报表查看器工作正常 - 我们正在使用 Kerberos。这不是问题 - 问题在于门户页面将 javascript 中的文档域设置为更高级别的域,以便我们解决同源策略的一些问题 - IE:以便它可以与其他域进行跨域操作设置中其他服务器的页面。 SSRS 没有设置这个,也不能从我看到的内容中设置,因此报告查看器 Web 部件无法正常工作,因为它与主机页面不在同一个域中,因此 iframe 的脚本编写失败。
    【解决方案2】:

    我最终通过使用此博客文章中的子框架解决了这个问题:

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

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2018-01-26
      相关资源
      最近更新 更多