SSRS报告中的嵌入式图像未显示 - 权限问题

BRO*_*DOS 4 permissions reporting-services

我在所有报告的顶部都有一个徽标,我将其作为嵌入式图像.

这些报告通过SSRS Web服务界面显示在ASP.Net Web应用程序中 - 所有非常标准的东西,但图像不呈现 - 我只是得到一个断开的链接.

这个问题有很多可能的解决方案,我尝试了一些方法,包括在ConfigurationInfo表中将UseSessionCookies设置为false.

我注意到,当我将消费网络应用程序的匿名帐户从最低权限服务帐户更改为我自己的用户帐户时,图像显示正常.

我不明白为什么会这样,并且无法确定我的网络应用程序的服务帐户需要什么特殊权限才能在报告中查看嵌入的图像.

有人可以帮忙吗?

BRO*_*DOS 7

好的,问题解决了.的种类.问题不仅限于嵌入式图像,因为我没有使用报告服务查看器.

总结一下:

1)当您的Web应用程序正在调用报表服务器时,它完全有权这样做.生成的SessionID仅可用于Web应用程序帐户(即运行应用程序的服务帐户).

2)Web应用程序将RAW HTML4.0输出到屏幕.

3)浏览器接收HTML并尝试检索HTML中引用的图像.

4)浏览器作为您的用户帐户运行(例如domain\username1)

5)报表服务器收到如下请求:

6)现在URL中列出的SessionID与domain\username1没有关联,因此报表服务器声称它不存在.

当您将应用程序域设置为使用域\用户名1帐户时,会话ID恰好与您的帐户相关联,因此突然之间"工作".但是当真正的用户尝试系统他们抱怨图像丢失时,因为他们的域\用户名N与应用程序池帐户不匹配.

这个问题的解决方案如下:

1)使用Report Viewer控件.这将确保浏览器收到的URL将指向您的Web应用程序,并且您的Web应用程序标识将用于从报表服务器检索它们.

2)在您的Web应用程序代码中,解析从Render调用中获取的HTML4.0,获取并缓存所有图像,重新编写HTML4.0链接以指向Web应用程序存储的缓存图像,然后将它发送到浏览器(如果这看起来很复杂......那么使用Report Viewer控件,因为它使场景工作)

3)您可以尝试使用MHTML输出格式,这将生成一个完全限定的报告,其中的图像嵌入在二进制流中.这样做的结果是将它嵌入应用程序页面更难......但不是不可克服的

我选择在2)上使用变体,因为我不想使用报表查看器.我正在尝试显示的徽标已经托管在调用Web应用程序中,因此我只需将SSRS报表执行服务返回的响应中的img标记的src属性替换为此位置的URL.

我真的不想使用报告查看器作为此问题的最佳解决方案.为什么SSRS必须使用会话信息返回那样简单显示在所有报告的标志我是无法理解的东西....它采取的年龄去的这条底线和解决方案不是特别漂亮...... .