请求失败,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:未授权的主要内容,如果未能解决你的问题,请参考以下文章