代码之家  ›  专栏  ›  技术社区  ›  Brian

401未经授权联系ASP.NET来自的web服务ASP.NETweb应用程序

  •  2
  • Brian  · 技术社区  · 17 年前

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

    例如:

    http://apps.mysite1.com http://myserver:xxxx

    我的网站2: http://something.mysite2.com 或 http://myserver:yyyy

    我有一个ASP.NET一个IIS站点(mysite1)和ASP.NET另一个IIS站点(mysite2)中的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服务(新方法),现在一切都不起作用了,任何Web服务调用都以401未经授权的消息结尾。

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

    蒂娅!

    1 回复  |  直到 17 年前
        1
  •  1
  •   dar    17 年前

    double-hop issue . 为了确认是否是一个双跳问题,我将更改行,其中 svc.Credentials = 并明确地放入凭证进行测试,看看是否有效。如果它真的起作用,那么就是双跳问题,您需要解决这个问题。