¿Cómo se convierte una url en una ruta virtual en asp.net sin el análisis manual de cadenas?

StackOverflow https://stackoverflow.com/questions/493580

Pregunta

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

Ejemplo:

Quiero " http: //myserver/home.aspx " convertido a: " ~ / home.aspx "

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

¿Fue útil?

Solución

Puede 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);

Otros consejos

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 " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top