我在下面使用
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位置。
请告知您之前是否已经看过这个。
答案 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>
或者您可以使用fiddler检查问题。
答案 1 :(得分:0)
经过大量的观察,我发现一个可能对其他人来说很明显的工作。我试图使用ajax调用来调用Action来下载文件。这似乎只是坐着但是在F12中没有错误,所以当我点击日志中显示的文件下载的电话时。
我已将我的流程移至"http://ip/website/action?fileName=" + fileName
这使用您所在浏览器的默认下载功能,因此适用于Chrome和IE。我还没有尝试过Firefox。