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

前端之家收集整理的这篇文章主要介绍了从ASP.Net页面通过C#将NetworkCredential传递给HttpWebRequest前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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创建一个标题,并插入基本身份验证标题显示内容.奇迹般有效.

猜你在找的asp.Net相关文章