2012-03-12 126 views
1

我有按钮,点击我想在本地PC上下载文件,我使用webclient.downloadfile(),但我是提示以下错误:使用webclient下载文件导致“访问被拒绝的路径被拒绝”

Access to the path 'C:\Windows\SysWOW64\inetsrv\ms-banner.gif' is denied. 

我使用下面的代码来下载文件:

WebClient client = new WebClient(); 
     client.DownloadFile(new Uri("http://www.contoso.com/library/homepage/images/ms-banner.gif"), "ms-banner.gif"); 

我不明白为什么它获取从本地服务器上的文件,因为我已经说过了远程URI

回答

3

它从远程服务器获取文件,但试图将其保存在当前目录中,因为您只指定了相对文件名作为第二个参数:"ms-banner.gif"。而且,您正在运行应用程序的帐户似乎没有写入当前工作目录的权限,该目录恰好是C:\Windows\SysWOW64\inetsrv

所以你基本上是2种可能:

  • 修改你正在运行的应用程序的帐户,并授予其权限写入到该目录
  • 指定其它位置(绝对路径)来保存文件到您在其下运行您的应用程序的帐户所在的位置具有写入权限。
+0

+1 - 我认为他应该直接指定一个适当的,而不是盲目推向Windows的东西。 – Phill 2012-03-12 23:19:34

+0

我有2个域说abc.com和xyz.com,都在同一台服务器上,两个poiting相同的文件夹在IIS中,现在我有一个文件在该目录中,如果用户点击abc.com并点击下载按钮,然后文件应该从xyz.com域下载,那么做什么也是最好的方法。 – Abbas 2012-03-12 23:22:42

+0

@Abbas,在您的ASP.NET应用程序中,您可以使用Request.Url属性来获取当前的请求url。从那里开始,您可以提取域并追加必要的位以访问您要下载的文件。 – 2012-03-12 23:23:59

0

contoso.com重定向到microsoft.com ...您在URL中存在的路径不存在,您将无法下载它。我不确定它为什么要尝试访问本地机器,但是您是否在其他某个网站上尝试了一些其他图像?例如http://i.cdn.turner.com/cnn/.e/img/3.0/global/header/hdr-main.gif

+0

我有2个域说,abc.com和xyz.com,都在同一台服务器上,两个poiting相同的文件夹在IIS中,现在我有一个文件在该目录中,如果用户点击abc.com并点击下载按钮,然后文件应该从xyz.com域下载,那么做什么也是最好的方法。 – Abbas 2012-03-12 23:21:13