Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对路径的访问被拒绝。。。为什么?_C#_Asp.net - Fatal编程技术网

C# 对路径的访问被拒绝。。。为什么?

C# 对路径的访问被拒绝。。。为什么?,c#,asp.net,C#,Asp.net,整个上午都有ASP.NET问题,现在我有了一个新的问题,就是这个 string filepath = ""; filepath = Server.MapPath(Request.QueryString["fileDownloadable"]); if (filepath != null) { Response.Clear(); Response.AddHeader("content-disposition", "attachment; filename=MyPDF.pdf");

整个上午都有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”]
来自此代码

  • 我检查了该文件夹的权限,它们与我根目录中的其他文件夹具有相同的权限

    有什么建议吗

    我在代码隐藏之间运行了此代码,以查看该文件是否存在

    if(File.Exists(filepath)){
    }
    

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

    对该路径的访问可能被拒绝,因为它可能不存在。在将文件炸成
    Response.WriteFile
    之前,您至少应该先执行一次检查,看看该文件是否存在。这也将给你一个机会,确保它试图得到的路径将工作


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

    清除缓存并重新打开浏览器,特别是,如果您在同一浏览器窗口中测试了一段时间。这为我修复了相同的问题。您检查了文件夹,但是否检查了要下载的单个文件,以查看其是否具有正确的权限?因此是否引发了拒绝访问异常?或者是写入控制台时出错?检查
    响应.WriteFile
    在哪个用户(Environment.UserName)下运行,以及
    文件路径
    的确切值(可能会映射到您期望的其他路径)。您知道此代码允许在您的网站中下载任意文件,对吗?