【发布时间】:2017-11-01 13:45:41
【问题描述】:
我正在编写 SSRS 报告。我有一个嵌入了外部图像的报告 这在报表查看器中呈现良好。
但是当我通过 web url 在我的应用程序中呈现 HTML 4.0 格式的报告时(不使用报告查看器)。从除图像之外的所有数据返回的报告不在 html 中
看到图像标签如下所示:-
<img onerror="this.errored=true;" class="r1" src="http://ges-server-pc/ReportServer_SQLEXPRESS?%2FGES-MVC%2FGES_FWCR&rs%3ASessionID=vdpuofii3xtph545xelnym45&rs%3AFormat=HTML4.0&rs%3AImageID=1403af250c474da8a5f851b63a8a377b">
如何在格式= HTML 4.0 的报告上呈现外部图像
任何人都可以有相同的解决方案吗?这将是可观的
提前致谢
【问题讨论】:
-
我敢打赌这是一个权限问题。您无权访问该资源。它看起来像来自渲染流的图像。您如何通过报表服务器进行身份验证?
-
是的,我在控制台中收到错误,状态代码为 401(未授权)。我正在使用“CredentialCache.DefaultCredentials”验证我的报告
-
你能解释一下你是如何获得有效载荷的吗?听起来您正在使用带有凭据的 ssrs 进行身份验证,然后报告以 byte[] 的形式返回并显示报告。有效负载内部是对返回报表服务器的 url 的引用,但是,您的渲染授权不包括您的应用程序需要访问它在服务器上创建的图像。
-
我正在使用服务器凭据对 SSRS 进行身份验证以呈现报告,然后报告作为响应流中的 HTML 返回并在我的应用程序中填充它而不使用报告查看器。看来我服务器渲染的html中的图像没有获得许可
-
如果没有 ssrs 将报告图像流式传输到/来自您的用户可以访问的位置,或者没有授予应用程序对 rs 本身的访问权限,我不知道答案。如果您找到一种通过 url 发送 DeviceInfo.StreamRoot 值的方法,那么您可以通过 URL 访问来执行此操作。我将发布一个我用来解决这个问题的答案。看看它,如果它不是你愿意承担的,或者你找到了 url 访问的解决方案,那么我将删除我的答案。请注意,我是直接使用 ssrs api 而不是 url 访问。
标签: reporting-services sql-server-2012 ssrs-2012