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.