Como a Microsoft Web API não é MVC , você não pode fazer algo assim:
var a = Request.MapPath("~");
nem isso
var b = Server.MapPath("~");
porque eles estão no System.Web
espaço para nome, não no System.Web.Http
espaço para nome.
Então, como você descobre o caminho relativo do servidor na Web API ?
Eu costumava fazer algo assim no MVC :
var myFile = Request.MapPath("~/Content/pics/" + filename);
O que me daria o caminho absoluto no disco:
"C:\inetpub\wwwroot\myWebFolder\Content\pics\mypic.jpg"
asp.net-web-api
Zachary Scott
fonte
fonte
IPathMapper
(você provavelmente juntará isso com várias outras preocupações em uma interface maior de cinto de ferramentas / utilitário) com o métodostring MapPath(string virtualPath)
. Apenas a aplicação concreta para as suasWebApi IPathMapper
necessidades de saber sobreSystem.Web.Hosting.HostingEnvironment
../images/
fonte
Como um aparte daqueles que se deparam com isso, uma boa maneira de executar o nível de teste ao usar a chamada HostingEnvironment é se o acesso, digamos, ao compartilhamento UNC: \ example \ mapeado para ~ / example /, você pode executá-lo para se locomover Problemas do IIS-Express:
Acho isso útil caso você tenha direitos para testar localmente em um arquivo, mas precise do mapeamento do ambiente uma vez em produção.
fonte
HostingEnvironment
classe está noSystem.Web.Hosting
espaço para nome.HostingEnvironment
para o DNX core 5.0?Eu não posso dizer a partir do contexto que você fornece, mas se é algo que você só precisa fazer a inicialização do aplicativo, você ainda pode usar
Server.MapPath
emWebApiHttpApplication
; por exemplo, emApplication_Start()
.Estou apenas respondendo sua pergunta direta; a já mencionada
HostingEnvironment.MapPath()
é provavelmente a solução preferida.fonte
Como
Server.MapPath()
não existe em uma API da Web (Soap ou REST), você precisará indicar o local em relação ao diretório inicial do contexto do servidor da Web. A maneira mais fácil de fazer isso é com:Você pode usar isso para concatenar uma cadeia de caminho para mapear o caminho relativo para qualquer arquivo.
NOTA: os caminhos de string são
\
e não/
são como no mvc.Ex:
retorna true postulando que este é um caminho sonoro no seu exemplo
fonte
A resposta selecionada não funcionou no meu aplicativo de API da Web. Eu tive que usar
fonte
~\folder
ou../images/
para caminhos físicosVocê pode tentar como:
var path = "~ / Image / test.png"; System.Web.Hosting.HostingEnvironment.MapPath (@ + path)
fonte