【问题标题】:Server.MapPath() not getting the path neededServer.MapPath() 没有获得所需的路径
【发布时间】:2011-09-18 14:07:59
【问题描述】:

我有一个包含以下目录的 asp.net 网站:

C:\Users\Desktop\Testing\src\website

我这里有另一个名为“files”的文件夹:

C:\Users\Desktop\Testing\src\files

在我的项目中,我试图从“文件”文件夹中读取文件,我这样做是这样的:

var path = HttpContext.Current.Server.MapPath("/files"); 

我也试过了:

var path = HttpContext.Current.Server.MapPath(".."); 

但上面写着Failed to map the path '/files'.

这可能是什么原因?它可以对我的 IIS 做些什么吗?我怎样才能让它工作??

谢谢!

【问题讨论】:

    标签: asp.net iis directory server.mappath


    【解决方案1】:

    你不能这样做。 Server.MapPath 方法仅适用于相对于 Web 应用程序根目录的文件夹,在您的情况下为 C:\Users\Desktop\Testing\src\website。由于您要离开此 ASP.NET 应用程序的控制域,因此无法使用此方法在层次结构中上一层。为此,您必须使用绝对路径。例如,如果您想读取某个位于应用程序之外的文件:

    var data = File.ReadAllText(@"C:\Users\Desktop\Testing\src\files\somefile.txt");
    

    【讨论】:

    • 谢谢!如何使用绝对路径?
    • @Ovi,我在回答中向您展示了。您写入文件的完整路径。
    • 谢谢,为什么它说“访问路径 'C:\Users\\Desktop\Testing\src\files' 被拒绝。”我只需要获取路径,然后从那里获取文件...
    • @Ovi,它这样说是因为您的站点在 IIS 中运行的帐户没有读取此目录的权限。您必须授予它访问权限。这就是您应该避免访问 ASP.NET 应用程序之外的文件的原因之一。建议为此使用特殊的App_Data
    • 你能告诉我具体怎么做吗?
    【解决方案2】:

    假设网站的虚拟目录映射到 .../src/website 你需要像这样获取“文件”文件夹:

    var filesDir = Path.Combine(HttpContext.Current.Server.MapPath("~"), "../files/");
    

    【讨论】:

      猜你喜欢
      • 2014-02-01
      • 2021-06-28
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2019-12-16
      • 2014-10-16
      相关资源
      最近更新 更多