は、RFC 3986によれば、パス成分のための有効な文字は、次のとおり URLパス実際に動作するエンコーディングですか?
a-z A-Z 0-9 . - _ ~ ! $ & ' () * + , ; = : @
ならびにパーセントエンコードされた文字やもちろん
、スラッシュ/
。
ただし、上記のルールに従って文字列を適切な形式のパスに変換するクラスは見つかりません。
string rawPath = "/A9_([email protected]*)/# ?/";
string expectedPath = "/A9_([email protected]*)/%23%20%3f";
しかし、コード下記参照:
string rawPath = "/A9_([email protected]*)/# ?/";
Uri.EscapeDataString(rawPath); //Output=>%2FA9_%28%2B%40%2A%29%2F%23%20%3F%2F
Uri.EscapeUriString(rawPath); //Ouput=>/A9_([email protected]*)/#%20?/
HttpUtility.UrlPathEncode(rawPath); //Ouput=>/A9_([email protected]*)/#%20?/
何も私は文字をエスケープを解除し、properyは、他のすべての文字をエスケープ許可葉を試していません。
誰かが私自身のユーティリティを書かなくてもいいですね!
フォーマットするのが特定の方法ですか、それともURLが機能しないのですか? –
パスの一部として '#'または '?'を渡す人は誰もあなたがそれをエスケープすると思います。彼らは区切り文字として扱うことを望みます。これにはあらかじめ調理されたメソッドがないことは本当に驚くことではありません。正しければ、渡すことができるかどうかにかかわらず、 '#'や '? 'を文字として含むパスを許可しないことです。 (私は多くのWebサーバーがこのケースを正しく処理するとは思っていませんが、それは別の問題です。) –