System.Uriクラスがコンストラクタに渡されたエンコードされたURLをエンコード解除しないようにするにはどうすればよいですか?次のコードを考えてみましょう。 -System.Uriの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);
それぞれの場合、出力は "http://foo.bar/foo/bar"です。 Uriインスタンスをインスタンス化した後、Uri.AbsoluteUriが "http://foo.bar/foo%2FBar"を返すようにするにはどうすればよいですか?
私はすでにURLENCODEを使用しています
は、誰かがこれを行う方法(ハック)を見つけようです。私の問題は、実際にはURLが(上記のスラッシュを含む)その中の文字をエスケープする可能性があるREST呼び出しを行うためにHttpWebRequestインスタンスを構築しようとしたときです。 WebRequest.Create(UrlString)オーバーロードを使用してリクエストを作成していましたが、サーバーに渡されているURLがエンコードされたスラッシュをエンコードしていないため、サーバー側エラーが発生していました。それ以上のテストでは、おそらくUriクラスの問題だったことが分かりました。 – Cleggy
アップデートのリンクをご覧ください – PinnyM
リンクありがとう、PinnyM。 「ひどいハック」の性質のため、私はそのルートに行くべきか、それとも私の問題を解決するために完全に別のタックを取るべきか疑問に思っています。現在、私はRESTサービスを呼び出そうとしていますが、代わりにこれをSOAPに変更する柔軟性があり、この問題も緩和する必要があります。それにもかかわらず、あなたはこの特定の問題を解決しましたので、これを正しい答えとしてマークします。 – Cleggy