Server.MapPath()没有获得所需的路径

时间:2011-09-18 14:07:59

标签: asp.net iis directory server.mappath

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

C:\ Users \用户桌面\测试\ SRC \网站

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

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

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

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

我也尝试过:

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

但它说Failed to map the path '/files'.

这可能是什么原因?它可以用我的IIS做点什么吗?我怎样才能使这个工作?

谢谢!

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

假设网站的虚拟目录映射到... / src / website,您需要获取“files”文件夹,如下所示:

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