c# - saveas - Obtener una ruta virtual relativa desde la ruta física
system web httpexception es una ruta de acceso física pero se esperaba una ruta de acceso virtual (4)
Tal vez esta pregunta es lo que estás buscando. Allí sugieren:
String RelativePath = AbsolutePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty);
¿Cómo puedo obtener la ruta virtual relativa de la ruta física en asp.net? El método inverso es como a continuación:
Server.MapPath("Virtual Path Here");
Pero, ¿qué es el reverso del método superior?
También podrías hacer algo como esto:
string relativePath = absolutePath.Replace(HttpContext.Current.Server.MapPath("~/"), "~/").Replace(@"/", "/");
La ventaja es que no necesita HttpContext.Current.Request
.
public static string MapPathReverse(string fullServerPath)
{
return @"~/" + fullServerPath.Replace(HttpContext.Current.Request.PhysicalApplicationPath,String.Empty);
}
Request.ServerVariables["APPL_PHYSICAL_PATH"]
está bien, pero no siempre. Está disponible solo si hay una solicitud HTTP.
Por otro lado, la llamada
HostingEnvironment.ApplicationPhysicalPath
está siempre disponible.