由于各种原因,在开发中我偶尔想拦截一个请求,比如〜/ MyStyle.css
我想要做的是让以下代码段工作:
string absFile = VirtualPathUtility.ToAbsolute(file);
return System.IO.File.ReadAllText(absFile);
这个绝对路径对于网络服务器来说是绝对的,它不会映射到“C:\ whatever”。是否有一个等效的方法去文件系统? (或ReadFromVirtualPath
等?)
答案 0 :(得分:18)
使用Server.MapPath()
获取所请求的应用程序路径的文件系统路径。
string absFile = Server.MapPath(file);
或
string absFile = HttpContext.Current.Server.MapPath(file);
答案 1 :(得分:6)
您还可以使用OpenFile
上的VirtualPathProvider
方法获取指向您文件的流
var stream = HostingEnvironment.VirtualPathProvider.OpenFile(file);
var text = new StreamReader(stream).ReadToEnd();
通常这种方法更可取,因为您现在可以在以后实现VirtualPathProvider
,其中,让您说出位于数据库中的所有css文件。