是否曾有人通过在IIS 7.5 ASP.NET应用程序中的虚拟目录中建立的URL重写来使用反向代理来从另一台服务器检索SSRS报告?
可以使用Web浏览器通过浏览到报告的URL从Web服务器查看SSRS报告,以便可访问性没有问题。 SSRS报告确实提示凭据,因此这可能是一个问题,但我想知道为什么凭证请求不会被发送回浏览器的HTTP请求。
位于“ssrs”虚拟目录中的URL重写配置如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^http(s)?://http://123.45.678.194/(.*)" />
<action type="Rewrite" value="http{R:1}://website.address.com/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="{C:1}://http://123.45.678.194/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
浏览到https://website.address.com/ssrs/Reports/Pages/Report.aspx?ItemPath=%2fSSRSReport时收到的错误是502 - Web服务器在充当网关或代理服务器时收到无效响应。
您要查找的页面存在问题,无法显示。当Web服务器(作为网关或代理)与上游内容服务器联系时,它从内容服务器收到无效响应。
感谢您提供任何帮助。
答案 0 :(得分:0)
我认为你是在思考这是我的猜测。
SSRS有三个部分,其中涉及在代码中或在提供凭证的其他URI上向“查看者”对象获取报告时的安全性。
在ASP.NET中的“ReportViewer”对象中调用报表服务器而不是在地址A的站点中调用报表服务器会更容易吗?而不是尝试重定向?我的猜测是,重定向的服务器上的凭证帐户无权在SSRS服务器上运行报告和/或也不是该SSRS站点的管理员。我只需在代码后面设置一个远程模式,以获取报告查看器对象的价值。这样,您不会重定向站点,而只是将对象引用到另一个站点并将其植入第一个站点。这可能是恕我直言的部分,以及你的依赖关系并不紧密。我在WPF中这样做,但我听说它与ASP.NET非常相似。有关详细信息,请参阅此主题: How to implement user impersonation in reporting services?