【问题标题】:The request failed with HTTP status 401: Unauthorized请求失败,HTTP 状态 401:未授权
【发布时间】:2011-03-18 00:03:06
【问题描述】:

我有一个在我的 IIS6 (XP Pro SP2) 中运行的 .NET 2.0 网站 (VB) 和一个托管 ASMX Web 服务的 .NET 3.5(当然,在 IIS 的 ASP.NET 选项卡下配置为 .NET2)。

在 Chrome 中,我可以调用 ASMX 并成功调用 Web 方法。但是,在代码中调用 web 方法时,我从 .NET 2.0 网站得到:

请求失败,HTTP 状态为 401:未授权。

我该如何解决这个问题?

【问题讨论】:

    标签: web-services http-status-code-401 .net-3.5


    【解决方案1】:

    您需要在初始化webService 对象时在您的应用程序中设置凭据。

    类似webService.UseDefaultCredentials = true

    这会将请求的凭据设置为执行应用程序的当前用户。

    【讨论】:

    • 这是为 VB/C# 创建的 cient .. 那么 Java 呢,比如说我需要通过移动应用程序连接到这个 web 服务。在这种情况下,我无法获得默认凭据。
    • 您节省了很多时间。谢谢。
    • 天哪。多年来,我们的 ASP.Net 站点中的代码没有此“UseDefaultCredentials”设置,并且一直运行良好。昨天,突然应用了微软的安全补丁,每次都出现“401 Unauthorized”错误。添加这一行代码解决了这个问题......真的很奇怪。
    • 这在开发应用程序时可能会起作用。但是,部署时要小心,因为您可能没有在部署机器中进行身份验证,在这种情况下,您需要按照Mohamad Chami's answer 中的说明进行设置。
    【解决方案2】:

    你可以使用这个:

    webservice.UseDefaultCredentials = true;
    

    如果不起作用,请使用下面的代码代替上面的代码

    webservice.Credentials = new NetworkCredential("userName", "password", "domain");
    webservice.PreAuthenticate = true;
    

    注意:用户名密码和域是访问webservice的用户的用户凭证

    所以请确保用户有权访问网络服务

    可能用户是windows用户

    您可以从以下位置获取域:右键单击“我的电脑”和属性 域是计算机名称或工作组

    【讨论】:

    • 我也面临同样的问题
    • 我遇到了同样的问题,您的解决方案对我有用,谢谢!
    【解决方案3】:

    在 IIS 7 中,启用匿名身份验证,您应该可以调试。

    【讨论】:

      【解决方案4】:
      webService.UseDefaultCredentials = true
      

      这对我有用。

      【讨论】:

        【解决方案5】:

        我是这样测试的:

        CheckListService.CheckList chkSrvice = new CheckListService.CheckList() {
            UseDefaultCredentials = true };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-30
          • 2012-11-27
          • 1970-01-01
          • 2012-05-03
          相关资源
          最近更新 更多