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

Xod*_*rap 5 c# asp.net asp.net-mvc asp.net-mvc-2

由于各种原因,在开发过程中,我偶尔会想要拦截〜/ MyStyle.css的请求

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

string absFile = VirtualPathUtility.ToAbsolute(file);
return System.IO.File.ReadAllText(absFile);
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*unt 18

使用Server.MapPath()来获取文件系统路径的请求的应用程序路径.

string absFile = Server.MapPath(file);
Run Code Online (Sandbox Code Playgroud)

要么

string absFile = HttpContext.Current.Server.MapPath(file);
Run Code Online (Sandbox Code Playgroud)


Pau*_*erø 6

您还可以使用该OpenFile方法VirtualPathProvider获取指向您的文件的Stream

var stream = HostingEnvironment.VirtualPathProvider.OpenFile(file);
var text = new StreamReader(stream).ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

通常这种方法是优选的,因为您现在可以在稍后实现VirtualPathProviderwhere,让您说出位于数据库中的所有css文件.