Come posso impedire alla classe System.Uri di decodificare un URL codificato passato nel suo costruttore? Considerare il seguente codice: -Come posso impedire a System.Uri di annullare la codifica di un URL?
Uri uri = new Uri("http://foo.bar/foo%2FBar");
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", false);
Console.WriteLine(uri.AbsoluteUri);
uri = new Uri("http://foo.bar/foo%2FBar", true);
Console.WriteLine(uri.AbsoluteUri);
In ogni caso l'output è "http://foo.bar/foo/bar". Come posso garantire che dopo aver istanziato un'istanza Uri, Uri.AbsoluteUri restituirà "http://foo.bar/foo%2FBar"?
Sono già usando UrlEncode. Il mio problema è in realtà quando si tenta di costruire un'istanza HttpWebRequest per effettuare una chiamata REST in cui l'URL potrebbe avere caratteri di escape (inclusa una barra come dimostrato sopra). Stavo usando il sovraccarico WebRequest.Create (UrlString) per creare la richiesta, e ho scoperto che l'URL passato al server stava annullando la codifica della barra codificata, causando un errore lato server. Ulteriori test hanno rivelato che questo era probabilmente un problema con la classe Uri, da qui la mia domanda. – Cleggy
Vedere il collegamento nell'aggiornamento – PinnyM
Grazie per il collegamento lì, PinnyM. A causa della natura del "Terribile hack", mi chiedo se dovrei seguire questa strada, o prendere un'altra virata per risolvere il mio problema. Attualmente sto tentando di chiamare un servizio REST, ma ho la flessibilità di cambiarlo in uno SOAP, che dovrebbe anche alleviare questo problema. Tuttavia, hai risolto questo particolare problema, quindi contrassegnerò questa come la risposta corretta. – Cleggy