ASP.Net 页面调用报告服务 Web 服务得到“401 Unauthorized”错误
Posted
技术标签:
【中文标题】ASP.Net 页面调用报告服务 Web 服务得到“401 Unauthorized”错误【英文标题】:ASP.Net pages call to Reporting Service Web Service get "401 Unauthorized" error 【发布时间】:2011-02-17 01:58:59 【问题描述】:我编写了一个 ASP.Net,它充当我们公司的报告服务中心。我参考了 MSDN,有以下设置:
rs = New ReportingService()
rs.UseDefaultCredentials = True
rs.PreAuthenticate = True
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
并在 Visual Studio 2008 下进行测试,效果很好。但是,一旦我将它发布到我的开发 PC (Windows XP) 上的 IIS (5.5) 以进行预生产部署测试,并从另一个工作站访问它,它会导致“HTTP 401:未经授权的错误”。 (但它通过本地访问工作)
我在 Web.config 中有以下几行:
<authentication mode="Windows"/>
<identity impersonate="true"/>
<authorization>
<deny users="?"/>
</authorization>
我在 IIS 服务器中有以下设置:
-
禁止匿名访问(在目录安全下)
使用集成 Windows 身份验证(在目录安全下)
请多多指教!
非常感谢。 威廉
【问题讨论】:
【参考方案1】:您可能从未听说过委托,对吧? http://msdn.microsoft.com/en-us/library/ff647404.aspx
使委派工作,然后您可以将凭据传递给报告服务。
【讨论】:
嗨 Lex,我听说了,但我不熟悉。我参考了 MSDN,并尝试了必要的编码和设置,但它不起作用。我想我找到了解释:odetocode.com/articles/216.aspx 应该是所谓的“使用 NTLM 身份验证的单跳限制”。为了将凭证委托超过一跳限制,需要公司的系统团队参与,即我无权这样做。如有不妥请指教。 我粘贴的那篇文章包含提示。如果您的公司不允许双跳,那么切换到“基本身份验证 + SSL”或“协议转换”是唯一剩下的选择。以上是关于ASP.Net 页面调用报告服务 Web 服务得到“401 Unauthorized”错误的主要内容,如果未能解决你的问题,请参考以下文章
Asp.Net - 从不同的应用程序层异步调用 web 服务,而不是页面本身