with what tutorial started net asp asp.net-web-api

asp.net-web-api - what - web api rest c#



Microsoft Web API: ¿Cómo se hace un Server.MapPath? (5)

Ya que Microsoft Web API no es MVC , no puedes hacer algo como esto:

var a = Request.MapPath("~");

ni esto

var b = Server.MapPath("~");

porque se encuentran debajo del espacio de nombres System.Web , no del espacio de nombres System.Web.Http .

Entonces, ¿cómo averiguas la ruta relativa del servidor en la API web ?
Solía ​​hacer algo como esto en MVC :

var myFile = Request.MapPath("~/Content/pics/" + filename);

Lo que me daría la ruta absoluta en disco:

"C:/inetpub/wwwroot/myWebFolder/Content/pics/mypic.jpg"


Además de aquellos que se tropiezan con esto, una buena forma de ejecutar el nivel de prueba al usar la llamada HostingEnvironment, es si accedemos a decir un recurso compartido UNC: / example / que se asigna a ~ / example / puede ejecutar esto para evitar Problemas de IIS-Express:

#if DEBUG var fs = new FileStream(@"//example/file",FileMode.Open, FileAccess.Read); #else var fs = new FileStream(HostingEnvironment.MapPath("~/example/file"), FileMode.Open, FileAccess.Read); #endif

Me resulta útil en caso de que tenga derechos para realizar pruebas locales en un archivo, pero necesita la asignación de env una vez en producción.


La respuesta seleccionada no funcionó en mi aplicación Web API. Tuve que usar

System.Web.HttpRuntime.AppDomainAppPath


No puedo decir por el contexto que proporciona, pero si es algo que solo necesita hacer al iniciar la aplicación, aún puede usar Server.MapPath en WebApiHttpApplication ; Por ejemplo, en Application_Start() .

Solo estoy respondiendo tu pregunta directa; el ya mencionado HostingEnvironment.MapPath() es probablemente la solución preferida.



string root = HttpContext.Current.Server.MapPath("~/App_Data");