0

我在下面使用

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 位置。

请告知您是否以前看过此内容。

4

2 回答 2

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>

在此处查看设置

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

于 2013-06-20T12:51:07.693 回答
0

经过大量查找后,我发现了一个对其他人来说可能很明显的解决方法。我试图使用 ajax 调用来调用 Action 来下载文件。这似乎只是坐着,但没有错误,所以在 F12 中,一旦我点击了日志中显示的文件下载的调用。

我已将我的流程转移到使用 href"http://ip/website/action?fileName=" + fileName

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

于 2013-06-26T14:01:24.557 回答