加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

从ASP.Net页面通过C#将NetworkCredential传递给HttpWebRequest

发布时间:2020-12-16 04:12:51 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用HTTPWebRequest来访问Web服务,并且在传递凭据时遇到问题,请参阅下面的代码.我可以看到在调试器中构建的凭证对象nc,以及request.Credentials的赋值,但是当我到达最后一行代码时,它会出现未经授权的错误消息.我让我们的服务器人员在服务器上查看
我正在尝试使用HTTPWebRequest来访问Web服务,并且在传递凭据时遇到问题,请参阅下面的代码.我可以看到在调试器中构建的凭证对象nc,以及request.Credentials的赋值,但是当我到达最后一行代码时,它会出现未经授权的错误消息.我让我们的服务器人员在服务器上查看请求,并且没有传递凭据.我在Credentials对象上做错了什么,或者我需要做些什么我不在这里做什么?
Uri requestUri = null;
Uri.TryCreate("https://mywebserver/webpage"),UriKind.Absolute,out requestUri);

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create
    (requestUri);

NetworkCredential nc =
    new NetworkCredential("user","password");

request.Credentials = nc;

request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

解决方法

NetworkCredentials要么非常直观,要么不精确,或者两者兼而有之.无论如何,您可以通过完全绕过NetworkCredentials来解决问题,并使用此方法(我发现,由mark.michaelis.net提供)
/* http://mark.michaelis.net/Blog/CallingWebServicesUsingBasicAuthentication.aspx */
byte[] credentialBuffer = new UTF8Encoding().GetBytes(username + ":" +password);
req.Headers["Authorization"] ="Basic " + Convert.ToBase64String(credentialBuffer);

所以你要做的是手动为你的HttpWebRequest创建一个标题,并插入基本身份验证标题中显示的内容.奇迹般有效.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读