¿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?

Author: pgb, 2009-06-01

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.

 72
Author: Mehrdad Afshari,
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:

introduzca la descripción de la imagen aquí

 18
Author: balexandre,
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)
 6
Author: Adamy,
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:

  1. Alojado como aplicación web independiente.
  2. Alojado como aplicación virtual dentro de una aplicación web.

    HttpContext.Actual.Solicitud.URL.GetLeftPart (UriPartial.Autoridad) + httpRuntime.AppDomainAppVirtualPath;

 3
Author: Rhonald Moses,
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;
}

Link 1

Link 2

 2
Author: Shoban,
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