ASP.NET MVC从虚拟路径获取文件

时间:2010-12-10 16:24:47

标签: c# asp.net asp.net-mvc asp.net-mvc-2

由于各种原因,在开发中我偶尔想拦截一个请求,比如〜/ MyStyle.css

我想要做的是让以下代码段工作:

string absFile = VirtualPathUtility.ToAbsolute(file);
return System.IO.File.ReadAllText(absFile);

这个绝对路径对于网络服务器来说是绝对的,它不会映射到“C:\ whatever”。是否有一个等效的方法去文件系统? (或ReadFromVirtualPath等?)

2 个答案:

答案 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文件。

相关问题