401从ASP.NET Web应用程序联系ASP.NET Web服务时未经授权

时间:2009-04-14 14:28:23

标签: asp.net web-services iis-6 windows-authentication

我有一台服务器(Windows 2003 / IIS 6)。此服务器在IIS中有一些不同的“网站”设置。每个站点在IIS中配置一个不同的主机头(端口80)。此外,每个站点也可以通过指定的端口号访问(没有主机头)。

例如:

MySite1: http://apps.mysite1.com 要么 http://myserver:xxxx

MySite2: http://something.mysite2.com 要么 http://myserver:yyyy

我编辑了我的主机文件(它是一台开发机器),将每个站点的主机头重定向到本地计算机(127.0.0.1)。

我在一个IIS站点(mysite1)中有一个ASP.NET 2.0网站,在另一个IIS站点(mysite2)中有一个ASP.NET 2.0 Web服务。该网站使用类似于以下内容的代码与Web服务进行通信:

MyWebService svc = new MyWebService();
//also have tried "http://myserver:yyyy/MyWebService.asmx" below
svc.Url = "http://something.mysite2.com/MyWebService.asmx"; 
svc.Credentials = System.Net.CredentialCache.DefaultCredentials;
svc.MyMethod();

所有站点都配置为Windows Integrated Security,并且ASP.NET配置为使用< identity impersonate =“true”/>进行Windows身份验证。安全模型规定登录到Web应用程序的用户应该一直通过Web服务进行身份验证(然后进入底层数据库,但这不一定与此相关)。

我有这个工作正常,但是我重建了我的Web服务(新方法),现在事情没有使用结果到以401 Unauthorized消息结尾的任何Web服务调用。

听起来像双跳问题。我认为它与Web服务有关,它不接受传递的凭据,并且要求传递新的凭据。只是不确定如何确认这一点。不知道为什么它会挑战 - 我以机器/域管理员身份登录,并且IE配置为在Internet选项中传递凭据>安全选项卡>自定义级别> Intranet区域中的自动登录。是的,相关网站已添加到我的“内部网区域”。

解决此问题的最佳方法是什么?关于现在可能导致这种情况的任何想法?

TIA!

1 个答案:

答案 0 :(得分:1)

这听起来像double-hop issue。为了确认是否是双跳问题,我将更改读取svc.Credentials =的行,并明确地输入凭据以进行测试,并查看它是否有效。如果它确实有效,那么它就是双跳问题,你需要解决这个问题。