HttpWebRequest不传递凭据
我试图使用HTTPWebRequest来访问REST服务,并且在传递证书时遇到问题,请参阅下面的代码。 我读过NetworkCredential不支持SSL,而且正在打HTTPS站点。 有没有人知道类似于支持SSL的NetworkCredential ? 
 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(); 
	
如果你的服务器使用NTLM身份validation,你可以试试这个:
 CredentialCache cc = new CredentialCache(); cc.Add( new Uri("https://mywebserver/webpage"), "NTLM", new NetworkCredential("user", "password")); request.Credentials = cc; 
当你使用老式的方法时,看看它是否显示出来:
 string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("user"+ ":" + "password")); request.Headers.Add("Authorization", "Basic " + credentials); 
 什么样的身份validation机制在保护Web服务? 在HttpWebRequest设置的凭据只能通过HTTP的Authorization头通过Basic , Digest或NTLM传递。 因此,如果您的Web服务受到WS-Security保护,则NetworkCredentials可能根本不会传递到身份validationscheme,因为WS-Security不会在HTTP级别上运行。 
 你应该做的是通过命令行工具wsdl.exe或类似的东西为Web服务创build一个Web服务客户端代理。 这将使您可以访问Web Serviceauthentication身份validationscheme。 
更新后的评论:
 看起来HttpWebRequest需要通过401 Unauthorized接收WWW-Authenticate挑战,才能通过SSL进行正确的authentication。 我想在HttpWebRequests有两个单独的代码path处理常规的HTTP通信和encryption的HTTPS通信。 无论如何,你应该尝试的是: 
-  执行未经身份validation的HttpWebRequest到https://.../URI。
-  收到401 Unauthorized回复。
-  执行相同的请求,现在与两个Credentials集(不知道如果PreAuthenticate应该是true或false;testing两者)。
-  您现在应该可以获得200 OK或者您的Web Service响应的任何内容。
 另一种select是在初始请求中自己构buildAuthorization头部: 
 string credentials = String.Format("{0}:{1}", username, password); byte[] bytes = Encoding.ASCII.GetBytes(credentials); string base64 = Convert.ToBase64String(bytes); string authorization = String.Concat("Basic ", base64); request.Headers.Add("Authorization", authorization); 
尝试设置request.PreAuthenticate为true。
- 为什么javascript onchange事件在自动完成时不会触发?
- 如何在GridView中添加页眉和子标题
- 为HTTP POST / GET请求启用ASP.NET ASMX Web服务
- 我是如何在构造函数之后立即得到这个NullReferenceException错误的?
- 值/文本更改服务器端后,从文本框中获取文本/值
- 如何configurationstream利的NHibernate输出查询,而不是控制台跟踪或debugging?
- 什么是IIS应用程序池?
- 如何将您的ASP.NET应用程序部署到活服务器?
- SQLnetworking接口,错误:50 – 发生本地数据库运行时错误。 无法创build自动实例