0

在 ASP.NET Web 应用程序上,我有一组可通过 2010 报表查看器访问的报表。该应用程序在生产中运行良好,直到管理员安装了 Windows 更新。从那时起,我现在收到以下错误消息:

The attempt to connect to the report server failed. Check your connection information and that the report server is a compatible version.
The request failed with HTTP status 404: Not Found. 

SSRS 位于同一台服务器上,我使用 FQDN,以便我可以使用主机头而不是端口号,即:

http://rs.myserver.my.domain.net/ReportServer

这一直有效,直到更新,现在自从更新显示上述错误,恢复功能的唯一方法是将 ReportServerUrl 设置为 localhost,基于端口的绑定,即:

http://localhost:8080/ReportServer

另请注意,尽管我从报表查看器收到上述错误消息,但我仍可以通过 FQDN 访问报表管理器和报表服务 Web 服务。

我发现最有趣的是,在我的开发服务器上,我能够复制该问题(尽管在同一天进行了更新,但该问题并不存在,尽管我尚未确定两者是否都运行了相同的更新)。我复制问题所做的只是安装 Report Viewer 2012 运行时。有趣的是,这个运行时并没有安装在开发环境中,但它是去年安装在生产环境中的。更新或卸载运行时会使系统处于相同的损坏状态。

希望有人可以提供一些见解,以便我可以恢复我想要的设置。

谢谢!

4

1 回答 1

1

这听起来像是服务器上的环回检测。环回检测旨在防止反射攻击,并在来自服务器的链接使用看起来像外部链接的东西环回同一服务器时表现出来。这就是 localhost 有效但您的 FQDN 无效的原因 - 服务器知道 localhost 是它本身,但 FQDN 看起来像一个外部链接。此检查确实与 Windows Server 上的某些服务包一起安装。

查看Microsoft 知识库文章 896861以了解解决此问题的方法。方法 1 涉及将主机名放在注册表中调用的多字符串值注册表项BackConnectionHostNamesHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0。方法 2 完全禁用环回检测(不太推荐),方法是在注册表中放置一个使用值DWORD调用的注册表项。DisableLoopbackCheck1HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

于 2014-01-21T03:37:09.473 回答