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

标签 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);

这在 .NET 4.0 中失败并显示“无法连接到远程服务器”。再一次,它在 .NET 3.5 中运行良好。我试过使用我的凭据代替默认凭据,但这也不起作用。这是我们正在尝试连接的内部服务器。

有人知道我可以做些什么来完成这项工作吗?

最佳答案

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

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

事实证明,它在 .NET 3.5 中只能在美国的一些机器上运行。该解决方案使其适用于 .NET 3.5 和 .NET 4.0。我们已经决定,试图找出版本之间存在差异的原因并不是我们想要完成的任务。

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

关于c# WebClient 调用在 .NET 3.5 中有效,但在 .NET 4.0 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788261/

相关文章:

c# - WCF 错误 "there was no endpoint listening at ..."

c# - MVC DropDownList 从一个数据库表填充并发送到另一个数据库表

c# - 如何根据需要指定 OperationContract 的参数

c# - 将 List<int> 转换为 List<List<int>>

c# - 当其他可观察值为 true 时,从可观察值中获取项目

c++ - 为什么在指针操作中出现访问冲突异常?

c# - 生成多个随机数

c# - 如何在 Windows Phone 8 应用程序中播放循环背景音频(不使用 BackroundAudio 服务)?

c# - 如何在C#中计算波信号的混响时间

c# - C# 中 Queue<T> 的入队事件