我有一个在我的 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:未授权。
我该如何解决这个问题?
我有一个在我的 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:未授权。
我该如何解决这个问题?
webService
初始化对象时,您需要在应用程序中设置凭据。
就像是webService.UseDefaultCredentials = true
这会将请求的凭据设置为执行应用程序的当前用户。
你可以使用这个:
webservice.UseDefaultCredentials = true;
如果不起作用,请使用下面的代码而不是上面的代码
webservice.Credentials = new NetworkCredential("userName", "password", "domain");
webservice.PreAuthenticate = true;
注意:用户名密码和域是访问webservice的用户的用户凭证
所以请确保用户有权访问网络服务
也许用户是windows用户
您可以从以下位置获取域:右键单击“MyComputer”和属性域是计算机名称或工作组
webService.UseDefaultCredentials = true
这对我有用。
在 IIS 7 中,启用匿名身份验证,您应该能够进行调试。
我是这样测试的:
CheckListService.CheckList chkSrvice = new CheckListService.CheckList() {
UseDefaultCredentials = true };