5

適切な画像を提供するためにいくつかのクエリ文字列値を必要とする ashx ファイルがあります。

問題は、一部の検索エンジンが urlencode を実行してから、それらの URL をキャッシュ内で html エンコードするか、インデックスを作成するときに発生することです。

たとえば、取得する代わりに

/preview.ashx?file=abcd.jpg&root=small

私は得る

/preview.ashx?file=abcd.jpg&root=small

これは基本的にをスローするため、変数ルートcontext.Request.QueryString["root"]がないと考えられます

クエリ文字列の 2 番目のキーはamp;root 、つまり & 記号の後の部分だと思います。

私が疑問に思っているのは、プログラムが混乱しないように、サーバー側でクエリ文字列を自動的に html および urldecode する方法があるかどうかです。

4

2 に答える 2

12

HttpUtility.HtmlDecodeまたはHttpUtility.UrlDecode複数回呼び出しても害はありません。

string queryString = "/preview.ashx?file=abcd.jpg&root=small";
var parsedString = HttpUtility.HtmlDecode(queryString);
var root = HttpUtility.ParseQueryString(parsedString)["root"];
于 2012-09-07T20:17:31.337 に答える
10

URL のエンコードとデコードには、次の方法を使用できます。

string encoded = System.Web.HttpUtility.UrlEncode(url);

string decoded = System.Web.HttpUtility.UrlDecode(url);

過去に、クエリ文字列が二重にエンコードされている例を見てきました。その場合、二重にデコードする必要があります — これはあなたの問題かもしれません...

于 2012-09-07T20:13:51.120 に答える