¿Cómo puedo obtener la ruta virtual completa de un ASP.NET solicitud
¿Cómo sé la ruta virtual completa que mi aplicación está alojada actualmente? Por ejemplo:
http://www.mysite.com/myApp
O
http://www.mysite.com/myApp/mySubApp
Conozco la ruta de la aplicación de HttpRequest, pero solo devuelve el nombre de la carpeta que mi aplicación está alojada actualmente, pero ¿cómo obtengo la parte inicial?
5 answers
La parte del nombre de dominio de la ruta no es realmente una propiedad de la aplicación en sí, pero depende de la URL que solicita. Es posible que pueda llegar a un solo sitio web desde muchos nombres de host diferentes. Para obtener el nombre de dominio asociado con la solicitud actual , junto con la ruta virtual de la aplicación actual, puede hacer:
Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath
Técnicamente, una "aplicación" es un directorio virtual definido en IIS y Request.ApplicationPath
devuelve exactamente eso. Si desea obtener la carpeta en que la actual solicitud se maneja, puede hacer esto:
VirtualPathUtility.GetDirectory(Request.Path)
ASP.NET no tiene idea de cómo distinguir su subaplicación de una aplicación más grande si no está definida como un directorio virtual en IIS. Sin registrarse en IIS, solo ve todo como una sola aplicación.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-31 20:24:35
Request.Url
Contiene varios puntos que podría considerar usar, vea la imagen a continuación:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-21 00:16:47
En. NET 4.5
VirtualPathUtility.ToAppRelative(path)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-03 03:27:23
El siguiente código resolverá el propósito, sin embargo, usted tiene que hacer un poco de ajuste para dos tipos de escenarios:
- Alojado como aplicación web independiente.
-
Alojado como aplicación virtual dentro de una aplicación web.
HttpContext.Actual.Solicitud.URL.GetLeftPart (UriPartial.Autoridad) + httpRuntime.AppDomainAppVirtualPath;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-24 19:26:27
Prueba esto (No lo he probado)
public string GetVirtualPath(string physicalPath)
{
string rootpath = Server.MapPath("~/");
physicalPath = physicalPath.Replace(rootpath, "");
physicalPath = physicalPath.Replace("\\", "/");
return "~/" + physicalPath;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-31 20:08:27