首先,在Chrome中对网址的请求有效。它会提示我输入用户名和密码,然后输入页面,并显示页面(这是OData请求)。
更新:该代码现已生效。过去,它在相同的URL上起作用,当我遇到此问题时,它正在为其他URL工作。但是有一段时间,它在我的系统上失败了。万一有人对我应该对以下代码进行更改的任何建议,我将保留这个问题。
但是以下代码以401失败:
WebRequest request = WebRequest.Create(url);
HttpWebRequest webRequest = request as HttpWebRequest;
webRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
var credentials = new NetworkCredential(username, password);
var credentialCache = new CredentialCache();
Uri uri = new Uri(url);
Uri site = new Uri(uri.GetLeftPart(UriPartial.Authority));
credentialCache.Add(site, "Negotiate", credentials);
credentialCache.Add(site, "Digest", credentials);
credentialCache.Add(site, "Basic", credentials);
credentialCache.Add(new Uri(url), "NTLM", credentials);
request.Credentials = credentialCache;
// this throws the exception
return request.GetResponse();
投掷:
System.Net.WebException HResult = 0x80131509 Message =远程 服务器返回错误:(401)未经授权。来源=系统
StackTrace:位于System.Net.HttpWebRequest.GetResponse() WindwardReportsDrivers.net.windward.AccessProviders.protocols.AllHttpAccessProvider.Request(字符串 url,NetworkCredential凭据,IDictionary2 headers, Dictionary
2 allProps)中 C:\ git \ Jenova \ engine \ DotNetEngine \ WindwardReportsDrivers \ net \ windward \ AccessProviders \ protocols \ AllHttpAccessProvider.cs:line 108