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);,它说 Access to the path is denied....为什么要这样做?

来自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)){
}

它运行页面没有错误,但页面的功能没有工作,这告诉我文件路径不存在。

4

1 回答 1

0

对该路径的访问可能会被拒绝,因为它可能不存在。在简单地将文件爆破之前,Response.WriteFile您应该至少先检查一下文件是否存在。这也将使您有机会确保它试图获得的路径将起作用。

还要记住,它不会知道您在 Web 应用程序范围内处理的“相对”路径。您应该确保使用其中一个Server.MapPath或某些配置设置,以确保您的filepath变量看起来像操作系统上的绝对路径,例如E:\Inetpub\wwwroot\....

于 2012-06-05T17:02:18.790 回答