2010-12-10 32 views
5

Por diversas razones, en el desarrollo de vez en cuando quiero para interceptar una solicitud para, por ejemplo, ~/miestilo.cssASP.NET MVC Obtiene el archivo de ruta de acceso virtual

Lo que quiero hacer es realizar los siguientes trabajos fragmento:

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

Esta ruta absoluta es absoluta para el servidor web, sin embargo, no va a asignar a "C: \ lo que sea". ¿Hay un método equivalente para ir al sistema de archivos? (¿O un ReadFromVirtualPath etc.?)

Respuesta

18

Utilice Server.MapPath() para obtener la ruta del sistema de archivos para una ruta de aplicación solicitada.

string absFile = Server.MapPath(file); 

o

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

También puede utilizar el método OpenFile en VirtualPathProvider para obtener una corriente que apunta a su archivo

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

En general este enfoque es preferible ya que ahora se puede, por lo un punto posterior implementa un VirtualPathProvider donde, digamos que todos tus archivos css están ubicados en una base de datos.

Cuestiones relacionadas