WebClient.DownloadFile在本地工作但不在服务器WS2008 R2 IIS7上工作

时间:2013-06-20 11:55:29

标签: c# asp.net-mvc-4 iis-7 webclient

我在下面使用

var inputPath = "file:" + fileName.Replace(@"\", @"/");
var uri = new Uri(inputPath);
var client = new WebClient();
client.DownloadFile(uri, downloadPath);

带文件名的“file:// *”直接在浏览器中打开。

该文件位于服务器上,当使用我的本地主机从VS2012中的DEBUG运行时可以访问和下载,但是当我键入浏览器以连接到DEV服务器版本时,它将不会下载该文件。

应用程序池以我的名义运行,因为我无法让应用程序池在AppPoolIdentity下运行。我完全控制文件位置的文件夹路径。 ANONYMOUS和Everyone也是如此,以防所有这些都是安全问题。

由于它是一个DEV盒子,我甚至完全删除了防火墙,看看防火墙是否阻止下载。

当我从Chrome浏览器和F12运行时,我可以看到,当DownloadFile运行时,代码部分的状态代码为200“OK”,因此没有错误,它只是不保存到我的downloadPath位置。

请告知您之前是否已经看过这个。

2 个答案:

答案 0 :(得分:1)

可能是代理设置问题:

<configuration>
 <system.net>
  <defaultProxy>
   <proxy
    usesystemdefaults="true"
    proxyaddress="http://192.168.1.10:3128"
    bypassonlocal="true"
   />
   <bypasslist
    <add address="[a-z]+\.contoso\.com" />
   </bypasslist>
  </defaultProxy>
 </system.net>

see settings here

或者您可以使用fiddler检查问题。

答案 1 :(得分:0)

经过大量的观察,我发现一个可能对其他人来说很明显的工作。我试图使用ajax调用来调用Action来下载文件。这似乎只是坐着但是在F12中没有错误,所以当我点击日志中显示的文件下载的电话时。

我已将我的流程移至"http://ip/website/action?fileName=" + fileName

使用href

这使用您所在浏览器的默认下载功能,因此适用于Chrome和IE。我还没有尝试过Firefox。