SOを検索して同様の質問を見つけましたが、3つすべてを比較したものはありませんでした。それは私を驚かせたので、誰かがそれを知っているなら、それを私に指摘してください。
リクエストのクエリ文字列を解析するには、さまざまな方法があります。「正しい」方法(IMO)は、null /欠落値を処理するだけでなく、必要に応じてパラメータ値をデコードする必要があります。次のうちどれが両方を行うための最良の方法でしょうか?
方法1
string suffix = Request.QueryString.Get("suffix") ?? "DefaultSuffix";
方法2
string suffix = Request.QueryString["suffix"] ?? "DefaultSuffix";
方法3
NameValueCollection params = HttpUtility.ParseQueryString(Request.RawUrl);
string suffix = params.Get("suffix") ?? "DefaultSuffix";
方法4
NameValueCollection params = HttpUtility.ParseQueryString(Request.RawUrl);
string suffix = params["suffix"] ?? "DefaultSuffix";
質問:
Request.QueryString["suffix"]
サフィックスが指定されていない場合、nullを返しますか?(恥ずかしいほど基本的な質問です、私は知っています)直接
HttpUtility.ParseQueryString()
アクセスするよりも追加の機能を提供しますか?Request.QueryString
MSDNのドキュメントには、この警告が記載されています。しかし、それを処理するためにその手段を使用する必要があるのか、それともセキュリティ上の欠陥にさらされている
The ParseQueryString method uses query strings that might contain user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.
のかはわかりません...どちらですか?ParseQueryString()
ParseQueryString()
デフォルトでUTF8エンコーディングを使用しています...すべてのブラウザはデフォルトでUTF8でクエリ文字列をエンコードしますか?ParseQueryString()
複数の値が指定されている場合は、値をコンマ区切りします...それもRequest.QueryString()
行いますか、そうでない場合はどうなりますか?これらのメソッドのどれが「%2b」を「+」に正しくデコードしますか?
私のWindows開発のルーツを再び示しています...そして私がこれらのことについてそれほど不思議に思っていなければ、私ははるかに速い開発者になるでしょう...:P