c# asp.net asp.net-mvc-3 iis server.mappath

c# - Usando Server.MapPath en MVC3



asp.net asp.net-mvc-3 (3)

Debe especificar que desea comenzar desde la raíz virtual:

string xsltPath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath(@"~/App_Data"), TransformFileName);

Además, es una mejor práctica usar Path.Combine para combinar rutas en lugar de concatenar cadenas. Path.Combine se asegurará de que no Path.Combine en una situación con separadores de doble vía.

EDITAR :

¿Puede definir rutas "absolutas" y "relativas" y cómo se comparan con las rutas "físicas" y "virtuales"?

MSDN tiene una buena explicación sobre rutas relativas, físicas y virtuales. Echa un vistazo allí.

Tengo el código

string xsltPath = System.Web.HttpContext.Current.Server.MapPath(@"App_Data") + "//" + TransformFileName

Vuelve

C:/inetpub/wwwroot/websiteName/SERVICENAME/App_Data/FileName.xsl

¿Por qué recibo la ruta al ServiceController, SERVICENAME ? Quiero el camino a App_Data que está en

C:/inetpub/wwwroot/websiteName/App_Data/FileName.xsl


Intenta hacer esto (@"~/App_Data") . ~/ representa el directorio raíz.


Las respuestas dadas hasta ahora son lo que está buscando, pero creo que, en su caso particular, lo que realmente necesita es esto:

AppDomain.CurrentDomain.GetData("DataDirectory").ToString()

Esto aún devolverá la ruta del archivo al directorio App_Data si ese nombre de directorio cambia en futuras versiones de MVC o ASP.NET.