2012-06-05 249 views
0

一直有ASP.NET問題的所有上午,現在我得到了一個新的,與此訪問路徑被拒絕...爲什麼?

string filepath = ""; 
filepath = Server.MapPath(Request.QueryString["fileDownloadable"]); 
if (filepath != null) 
{ 
    Response.Clear(); 
    Response.AddHeader("content-disposition", "attachment; filename=MyPDF.pdf"); 
    Response.WriteFile(filepath); 
    Response.ContentType = ""; 
    Response.End(); 
} 

給我上線18這是Response.WriteFile(filepath);一個錯誤,它說,對路徑的訪問被拒絕...爲什麼這樣做?

Request.QueryString["fileDownloadable"]來源於此代碼...

<li><a href="./DownloadableProducts.aspx?fileDownloadable=/downloadableProducts/MyPDF.pdf" runat="server">IPC Client Personal Financial Website Feb 12</a></li>

我檢查了文件夾的權限和他們有同樣的權限在我的根所有其他文件夾中。

任何建議嗎?

我跑這其間的代碼背後我的代碼,看看是否文件中存在..

if(File.Exists(filepath)){ 
} 

和它運行的頁面沒有錯誤,但沒有功能上的頁面wasnt工作,這告訴我,文件路徑不存在。

+0

清除緩存並重新打開瀏覽器,如果您在同一個瀏覽器窗口中進行了一段時間的測試。這對我來說固定的問題。 – IrishChieftain

+0

您檢查了該文件夾,但您是否檢查了您嘗試下載的單個文件以查看它是否具有正確的權限? –

+0

那麼它拋出一個拒絕訪問異常?或者是寫入控制檯的錯誤? – Botonomous

回答

0

訪問該路徑很可能被拒絕,因爲它可能不存在。在簡單地將文件放入Response.WriteFile之前,您應至少執行一次檢查,以查看文件是否首先存在。這也會讓你有機會確保它試圖獲得的路徑有效。

另外請記住,它不會在web應用程序的範圍內意識到您正在處理的「相對」路徑。您應確保使用Server.MapPath或某些配置設置,以確保filepath變量看起來像操作系統上的絕對路徑,例如E:\Inetpub\wwwroot\...