2012-03-12 155 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