Come codificare correttamente un percorso che include un hash (#)? Nota che l'hash non è l'indicatore del frammento (segnalibro?) Ma parte del nome del percorso.Come codificare un percorso che contiene un hash?
Per esempio, se c'è un percorso come questo:
http://www.contoso.com/code/c#/somecode.cs
provoca problemi quando si per esempio provare esegue questa operazione:
Uri myUri = new Uri("http://www.contoso.com/code/c#/somecode.cs");
Sembrerebbe che interpreta l'hash come l'indicatore del frammento.
È sbagliato sostituire manualmente # con% 23. Ci sono altri personaggi che dovrebbero essere sostituiti? Ci sono alcuni metodi di escape in Uri e HttpUtility, ma nessuno sembra fare il trucco.
La stringa enc nell'esempio, sebbene con escape, non è più un URI valido. Prova Uri uri = nuovo Uri (enc) e vedrai che genera un'eccezione URI non valida. Trovato la soluzione corretta però. – Dodgyrabbit
Interessante. Sono un po 'confuso dalla documentazione MSDN, quindi, che dice _Encodes una stringa URL. Il metodo UrlEncode può essere utilizzato per codificare l'intero URL, inclusi i valori stringa di query._ (vedere http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx) – LiquidPony