2010-12-10 182 views
5

由於種種原因獲取文件,在發展中,我偶爾想攔截,比如說請求,〜/ MyStyle.cssASP.NET MVC從虛擬路徑

我想要做的就是下面的代碼片斷工作:

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

這絕對的路徑是絕對的網絡服務器,但它不會映射到「C:\無論」。是否有等同的方法去文件系統? (或者ReadFromVirtualPath等?)

回答

18

使用Server.MapPath()可獲取請求的應用程序路徑的文件系統路徑。

string absFile = Server.MapPath(file); 

string absFile = HttpContext.Current.Server.MapPath(file); 
6

您也可以使用VirtualPathProviderOpenFile方法來獲取流在你的文件指向

var stream = HostingEnvironment.VirtualPathProvider.OpenFile(file); 
var text = new StreamReader(stream).ReadToEnd(); 

一般來說這種做法是可取的,因爲你現在可以在稍後的一點實現一個VirtualPathProvider在哪裏,讓我們說你的所有位於數據庫中的css文件。