2012-06-05 254 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\...