今天在做WebService的调用时出现了这样一个问题:请求因 HTTP 状态 401 失败:Unauthorized。
一时我不知道怎么回事,上网查了些资料,原来是这样的。
这个问题是出现在.net 2.0、IIS5的环境下在大部分的ASP.NET程序部署方案中,IIS的配置都会选择“目录安全性”为“匿名访问”,这样所有用户都可以轻松的访问WEB应用。我们也可以在WEB应用程序中,再调用WebService。
不过在有域(domain)的局域网中,有时会需要WEB应用识别用户的身份,这时的IIS配置,就不能选择“匿名访问”了,而要选择“windows域服务器身份验证”,并且要选择一个默认的域。做了这样的修改以后,再要访问这个WEB应用,就必须输入域用户和密码了。当然你也可以把当前的站点添加到“受信任站点”里面,IE会自动帮你登录。这时问题出现了,在使用调用了WebService的功能的时候,页面提示异常:请求因 HTTP 状态 401 失败:Unauthorized。
这个问题的主要原因是,WEB应用没有把当前的凭据传给WebService,而WebService也需要用户的身份信息,因此报了“未授权”的错误。只要把WebService的实例对象的Credentials属性重新设置,问题解决了。
ws_obj.Credentials = System.Net.CredentialCache.DefaultCredentials;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。