2010-12-10 24 views
5

Per varie ragioni, in fase di sviluppo che di tanto in tanto voglia di intercettare una richiesta per, diciamo, ~/miostile.cssASP.NET MVC Ottenere file da percorso virtuale

Quello che voglio fare è effettuare i seguenti lavori frammento:

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

Questo percorso assoluto è assoluto per il server Web, tuttavia, non verrà mappato a "C: \ qualunque". Esiste un metodo equivalente per andare al file system? (O a ReadFromVirtualPath ecc.)

risposta

18

Utilizzare Server.MapPath() per ottenere il percorso del file system per un percorso dell'applicazione richiesto.

string absFile = Server.MapPath(file); 

o

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

È inoltre possibile utilizzare il metodo OpenFile su VirtualPathProvider per ottenere un flusso indicando il file

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

Generalmente questo approccio è preferibile in quanto è ora possibile, a un punto successivo implementa un VirtualPathProvider dove, diciamo tutti i file css in cui si trova in un database.

Problemi correlati