Поскольку Microsoft Web API не MVC , вы не можете сделать что-то вроде этого:
var a = Request.MapPath("~");
ни это
var b = Server.MapPath("~");
потому что они находятся в System.Web
пространстве имен, а не в System.Web.Http
пространстве имен.
Так как же определить относительный путь к серверу в Web API ?
Я делал что-то подобное в MVC :
var myFile = Request.MapPath("~/Content/pics/" + filename);
Который дал бы мне абсолютный путь на диске:
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"
asp.net-web-api
Захари Скотт
источник
источник
IPathMapper
(вы, вероятно, свернете это с кучей других проблем в больший интерфейс toolbelt / utility) с методомstring MapPath(string virtualPath)
. Только конкретная реализация, о которой вамWebApi IPathMapper
нужно знатьSystem.Web.Hosting.HostingEnvironment
../images/
источник
В дополнение к тем, кто сталкивается с этим, один хороший способ запустить тестовый уровень при использовании вызова HostingEnvironment, если при доступе, скажем, к общему ресурсу UNC: \ example \, сопоставленному с ~ / example /, вы можете выполнить это, чтобы обойти Вопросы IIS-Express:
Я считаю, что это полезно, если у вас есть права на локальное тестирование файла, но вам нужно сопоставление env после запуска.
источник
HostingEnvironment
класс находится вSystem.Web.Hosting
пространстве имен.HostingEnvironment
для ядра DNX 5.0?Я не могу сказать из контекста, который вы предоставляете, но если это то, что вам просто нужно сделать при запуске приложения, вы все равно можете использовать
Server.MapPath
вWebApiHttpApplication
; например, вApplication_Start()
.Я просто отвечаю на ваш прямой вопрос; уже упоминавшееся
HostingEnvironment.MapPath()
, вероятно, является предпочтительным решением.источник
Так
Server.MapPath()
как не существует внутри Web Api (Soap или REST), вам нужно будет обозначить локальный относительно каталога context-home веб-сервера. Самый простой способ сделать это с помощью:Затем вы можете использовать это для объединения строки пути для сопоставления относительного пути с любым файлом.
ПРИМЕЧАНИЕ: пути к строкам
\
не/
такие, как в mvc.Пример:
возвращает true, утверждая, что это звуковой путь в вашем примере
источник
Выбранный ответ не работает в моем приложении Web API. Я должен был использовать
источник
~\folder
или../images/
физические путиВы можете попробовать как:
var path = "~ / Image / test.png"; System.Web.Hosting.HostingEnvironment.MapPath (@ + путь)
источник