c#WebClient调用在.NET 3.5中有效,但在.NET 4.0中无效

时间:2014-05-21 15:57:04

标签: c# .net .net-4.0 .net-3.5 webclient

使用VS2010,我有以下问题。在针对.NET 3.5构建时,它可以正常工作。在针对.NET 4.0构建时,我们收到错误。

string url = "http://internal_url";
WebClient wb = new WebClient();
wb.Credentials = CredentialCache.DefaultNetworkCredentials;
wb.Proxy.Credentials = CredentialCache.DefaultCredentials;
wb.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET LR 1.0.3705;)");
Stream stream = wb.OpenRead(url);

这失败,并且#34;无法连接到远程服务器"在.NET 4.0中。再一次,它在.NET 3.5中运行良好。我尝试使用我的凭据代替默认凭据,但这也没有用。这是我们尝试连接的内部服务器。

任何人对我能做些什么都有任何想法?

1 个答案:

答案 0 :(得分:0)

事实证明,这是我们全球设置的代理问题。

在发现解决方案后,我获得了更多信息。无论.NET版本如何,此代码都在我们的公司总部(位于欧洲国家),但不在美国。原因是防火墙设置使得.NET 4.0中的默认凭据不可接受。一旦将正确代理的IP输入到代码中,它就可以在美国使用。

事实证明,它仅适用于.NET 3.5,仅适用于美国的部分机器。此解决方案使其可在.NET 3.5和.NET 4.0中运行。我们已经决定试图弄清楚为什么版本之间存在差异并不是我们想要实现的任务。

长话短说 - 如果遇到此问题,请检查代理设置并查看使用代理的IP地址而不是默认代理。