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

Posted

技术标签:

【中文标题】请求失败,HTTP 状态 401:未授权【英文标题】:The request failed with HTTP status 401: Unauthorized 【发布时间】: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:未授权。

我该如何解决这个问题?

【问题讨论】:

【参考方案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 ;

【讨论】:

以上是关于请求失败,HTTP 状态 401:未授权的主要内容,如果未能解决你的问题,请参考以下文章

当我使用 asmx 服务和 s-s-rS 报告服务时,我收到“请求失败,http 状态 401:未授权”

Http常见状态码

HTTP状态码介绍

404502500等HTTP状态码

一般的响应状态码

400/404等状态码含义