tag net for asp asp.net url path virtual-path

asp.net - for - tag helpers asp net core



¿Cómo se convierte una URL a una ruta virtual en asp.net sin un análisis manual de cadenas? (2)

He visto preguntas y respuestas similares con respecto a las conversiones de virtual a absoluta y url, pero ¿cómo puedo convertir una url a una ruta virtual sin un análisis manual de cadenas?

Ejemplo:

Quiero que " http: //myserver/home.aspx " se convierta en: "~ / home.aspx"

Me doy cuenta de que el ejemplo anterior sería una rutina fácil de análisis de cadenas, pero estoy buscando una solución adecuada que se adapte al cambio del formato de URL.


Puedes obtener la mayor parte de la clase Uri:

new Uri("http://myserver.com/home.aspx").AbsolutePath

Entonces solo tienes que anteponer el ~

Sin embargo, eso podría romperse si aloja en un subdirectorio; no creo que haya una manera de hacerlo específicamente en el contexto de la aplicación que está ejecutando.

EDITAR: Esto podría hacerlo:

VirtualPathUtility.ToAppRelative(new Uri("http://myserver.com/home.aspx").AbsolutePath);


VirtualPathUtility.ToAppRelative Method (String) parece ser lo que está buscando ( http://msdn.microsoft.com/en-us/library/ms150163.aspx )

Si la ruta virtual para la aplicación es "myapp" y la ruta virtual "/myApp/sub/default.asp" se pasa al método ToAppRelative, la ruta relativa a la aplicación resultante es "~ / sub / default.aspx".