2010-12-10 21 views
5

Pour diverses raisons, dans le développement que je veux de temps en temps pour intercepter une demande, par exemple, ~/monstyle.cssASP.NET MVC Récupérer le fichier de chemin virtuel

Ce que je veux faire est de faire le travail d'extrait suivant: Ce chemin absolu est absolu pour le serveur web, mais il ne va pas correspondre à "C: \ quelquechose". Existe-t-il une méthode équivalente pour accéder au système de fichiers? (Ou un ReadFromVirtualPath etc.?)

Répondre

18

Utilisez Server.MapPath() pour obtenir le chemin d'accès du système de fichiers pour un chemin d'application demandé.

string absFile = Server.MapPath(file); 

ou

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

Vous pouvez également utiliser la méthode OpenFile sur VirtualPathProvider pour obtenir un flux pointant vers votre fichier

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

En général, cette approche est préférable puisque vous pouvez maintenant, à un point plus tard implémenter un VirtualPathProvider où, disons tous vos fichiers css où se trouve dans une base de données.