WebClient.DownloadFile问题和响应标头(Vary:negotiate,Pragma:no-cache)

时间:2013-02-07 00:16:49

标签: c# .net fiddler

我有一个SSIS工作,在其任务之一中,我使用脚本任务(C#代码)尝试从给定网站下载CSV文件(使用WebClient.DownloadFile方法)以供后续阶段处理。

每次下载CSV都会失败,因此在尝试调查This Blog时遇到的问题时,发现当CSV文件的网址中包含Vary: negotiatePragma: no-cache时响应标题然后下载失败。 IE8是主机服务器上可用的IE的最新版本,所以我对此没有发言权。尝试使用IE8下载CSV文件时显示以下错误:

enter image description here

尝试下载CSV文件时的响应标头:

enter image description here

当我使用以下过滤器运行Fiddler时,CSV的下载按预期在IE8中运行:

enter image description here

所以我的问题是如何使用WebClient.DownloadFile执行此操作?我看着Fiddler.Core,但无法弄清楚如何做到这一点。我还调查了使用:

简单地运行Fiddler
  ProcessStartInfo startInfo = new ProcessStartInfo();
  startInfo.FileName = @"C:\PROGRA~1\Fiddler2\Fiddler.exe";

但上述方法的问题在于,当调用Process.Kill()时,Fiddler没有机会自行清理并留下其代理等等导致其他应用程序的连接中断。

有人能告诉我如何处理这种情况吗?谢谢

1 个答案:

答案 0 :(得分:0)

.NET WebClient实现不受上面引用的IEInternals博客文章中描述的限制。 WebClient直接基于套接字,而不是WinINET。您的问题与这些标题无关。