【问题标题】:WebClient.DownloadFile working locally but not on server WS2008 R2 IIS7WebClient.DownloadFile 在本地工作但不在服务器 WS2008 R2 IIS7 上
【发布时间】:2013-06-26 22:01:24
【问题描述】:

我在下面使用

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

如果你以前看过这个,请告知。

【问题讨论】:

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


    【解决方案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 来检查问题。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-22
        • 2021-10-01
        相关资源
        最近更新 更多