我有一个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做点什么吗?我怎样才能使这个工作?
谢谢!
答案 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/");