【问题标题】:c# WebClient call works in .NET 3.5 but not in .NET 4.0c# WebClient 调用在 .NET 3.5 中有效,但在 .NET 4.0 中无效
【发布时间】:2014-07-10 09:28:59
【问题描述】:

使用 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 中运行良好。我尝试使用我的凭据代替默认凭据,但这也不起作用。这是我们正在尝试连接的内部服务器。

有人对我可以做些什么来完成这项工作有任何想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-09-05
      • 2011-04-04
      • 2012-03-14
      • 2010-10-11
      • 2012-06-12
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多