ASP.NET MVC Получить файл из виртуального пути - PullRequest
5 голосов
/ 10 декабря 2010

По разным причинам в процессе разработки я иногда хочу перехватить запрос, скажем, ~ / MyStyle.css

Я хочу сделать следующий фрагмент кода:

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

Этот абсолютный путь является абсолютным для веб-сервера, однако он не будет отображаться в "C: \ what". Есть ли эквивалентный метод для перехода в файловую систему? (Или ReadFromVirtualPath и т. Д.?)

Ответы [ 2 ]

18 голосов
/ 10 декабря 2010

Используйте Server.MapPath(), чтобы получить путь к файловой системе для запрошенного пути приложения.

string absFile = Server.MapPath(file);

или

string absFile = HttpContext.Current.Server.MapPath(file);
6 голосов
/ 10 декабря 2010

Вы также можете использовать метод OpenFile на VirtualPathProvider, чтобы получить поток, указывающий на ваш файл

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

Как правило, этот подход предпочтительнее, поскольку теперь вы можете, в более поздний момент реализовать VirtualPathProvider где, скажем, все ваши CSS-файлы находятся в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...