¿Cómo se codifica correctamente una ruta que incluye un hash (#) en él? Tenga en cuenta que el hash no es el indicador de fragmento (marcador?) Sino parte del nombre de ruta.Cómo codificar una ruta que contiene un hash?
Por ejemplo, si hay un camino como éste:
http://www.contoso.com/code/c#/somecode.cs
que causa problemas cuando, por ejemplo, tratar de hacer esto:
Uri myUri = new Uri("http://www.contoso.com/code/c#/somecode.cs");
Parecería que interpreta el hash como el indicador de fragmento.
Se siente mal reemplazar manualmente # con% 23. ¿Hay otros personajes que deberían ser reemplazados? Hay algunos métodos de escape en Uri y HttpUtility, pero ninguno parece ser el truco.
La cadena enc en el ejemplo, aunque escapó, ya no es un URI válido. Pruebe Uri uri = new Uri (enc) y verá que arroja una excepción de URI no válida. Encontré la solución correcta sin embargo. – Dodgyrabbit
Interesante. Estoy un poco confundido por la documentación de MSDN, que dice _Encodes una cadena de URL. El método UrlEncode se puede utilizar para codificar la URL completa, incluidos los valores de la cadena de consulta._ (consulte http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx) – LiquidPony