2

我有一个服务器(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 集成安全性进行了配置,并且 ASP.NET 配置为使用 <identity impersonate="true" /> 进行 Windows 身份验证。安全模型规定,登录到 Web 应用程序的用户应该一直通过 Web 服务进行身份验证(然后再到底层数据库,但这并不一定相关)。

我的工作正常,但是我重建了我的 Web 服务(新方法),现在任何以 401 Unauthorized 消息结尾的 Web 服务调用的结果都无法正常工作。

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

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

蒂亚!

4

1 回答 1

1

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

于 2009-04-14T16:04:13.167 回答