Asp.net Server.MapPath()未获取所需的路径

Asp.net Server.MapPath()未获取所需的路径,asp.net,iis,directory,server.mappath,Asp.net,Iis,Directory,Server.mappath,我有一个asp.net网站,其目录如下: C:\Users\Desktop\Testing\src\website 我还有一个名为“文件”的文件夹在这里: C:\Users\Desktop\Testing\src\files 在我的项目中,我试图从“文件”文件夹中读取文件,我是这样做的: var path = HttpContext.Current.Server.MapPath("/files"); var filesDir = Path.Combine(HttpContext.Curre

我有一个asp.net网站,其目录如下:

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

我还有一个名为“文件”的文件夹在这里:

C:\Users\Desktop\Testing\src\files
在我的项目中,我试图从“文件”文件夹中读取文件,我是这样做的:

var path = HttpContext.Current.Server.MapPath("/files"); 
var filesDir = Path.Combine(HttpContext.Current.Server.MapPath("~"), "../files/");
我还尝试:

var path = HttpContext.Current.Server.MapPath(".."); 
但是它说,
未能映射路径“/files”。

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


谢谢大家!

你不能这么做。
Server.MapPath
方法仅适用于与web应用程序根目录相关的文件夹,在您的情况下,该文件夹是
C:\Users\Desktop\Testing\src\website
。由于您要离开此ASP.NET应用程序的控制域,因此无法使用此方法在层次结构中升级一级。要实现这一点,您必须使用绝对路径。例如,如果要读取位于应用程序外部的文件:

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

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

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

假设网站的虚拟目录映射到…/src/website,则需要获得如下“文件”文件夹:

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

假设网站的虚拟目录映射到…/src/website,则需要获得如下“文件”文件夹:

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

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