我将此代码与.NET 3.5结合使用,并收到错误远程服务器返回错误:(407)需要代理身份验证。
I use this code with .NET 3.5 and receive error "The remote server returned an error: (407) Proxy Authentication Required."
using (WebClient client = new WebClient()) { WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials; try { string webPageStr = client.DownloadString(URL); Console.WriteLine("OK"); } catch (Exception ex) { Console.WriteLine("FAIL"); Console.WriteLine(ex.Message); } }但是,此代码可与.NET 4.0一起顺利使用此行足以通过代理身份验证,而不适用于.NET 3.5。
However, this code works smoothly with .NET 4.0 as this line is sufficient to pass the proxy authentication while it is not for .NET 3.5.
WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;因此,我尝试了许多其他方法来解决此问题,但没有一种有效:
Therefore, I tried many other ways to solve this problem but none of them works:
1)将CredentialCache.DefaultCredentials行替换为
1) Replace CredentialCache.DefaultCredentials line with
WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(user, password, domain);2)创建新的代理对象
2) Create new proxy object
IWebProxy proxy = new WebProxy(proxyUrl, port); proxy.Credentials = new NetworkCredential(user, pass, domain); client.Proxy = proxy; client.Credentials = new NetworkCredential(user, pass, domain);3)添加此行
client.UseDefaultCredentials = true;4)使用HttpWebRequest代替WebClient并重复上述每个过程。这是示例代码。
4) Use HttpWebRequest instead of WebClient and repeat every procedure above. This is sample code.
HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest; webRequest.Proxy = WebRequest.DefaultWebProxy; webRequest.Credentials = new NetworkCredential(user, pass, domain); webRequest.Proxy.Credentials = new NetworkCredential(user, pass, domain); try { webRequest.GetResponse(); Console.WriteLine("OK"); } catch (Exception ex) { Console.WriteLine("FAIL"); Console.WriteLine(ex.Message); }我觉得自己走到了穷途末路,因为必须使用.NET 3.5。我不知道的这两个.NET版本之间一定有区别。
I feel like I come to a dead end as I have to use .NET 3.5. There must be difference between these two .NET versions that I do not know. Thank you very much in advance.
推荐答案只需将其添加到配置中
<system> <defaultProxy useDefaultCredentials="true" > </defaultProxy> </system>更多推荐
远程服务器返回错误:(407)需要代理身份验证
发布评论