0

クエリ文字列を使用して制御するIISWebサーバーからWebページを要求しようとしています。

たとえば、winformsアプリにWebブラウザーコントロールがあり、「www.site.com/getpage.ashx?field=afsfgwesar+sere」のようなページをリクエストします。

これを実行しようとすると、サーバー側でgetpage.ashxが正しいフィールドを見つけることができないため、失敗します。

何度も髪を引っ張った後、文字列が実際にブラウザに送信されたものと受信されたものから変更されていることがわかりました。つまり、サーバーが動作を開始したときにプラス記号が表示されません。

「afsfgwesar+sere」で始まり、「afsfgwesarsere」で終わります。では、どこかで文字列が再フォーマットされているのでしょうか。

これは私がサーバー側で文字列を取得する方法です-

string field = (string)context.Request.QueryString["field"];

この時点で、私は足を踏み入れて、行方不明のプラス記号を見ました。

なぜ私がプラス記号を失っているのか、そしてどうすればそれを取り戻すことができるのか誰かが知っていますか?

4

2 に答える 2

2

スペースは使用できない文字であるため、+記号はスペース文字に置き換えられます。

%2BURLがデコードされた後、プラス記号を「取得」するために挿入できます。

www.site.com/getpage.ashx?field=afsfgwesar%2Bsere

HttpUtilityクラスには、文字列をURLエンコードおよびデコードするためのメソッドがあります。それが基本的に何をするかを見るために、あなたが使うことができるオンラインエンコーダー/デコーダーもあります。

于 2010-01-30T13:34:45.007 に答える
0

プラス記号は、クエリ文字列の予約文字です。多くの場合、スペース文字として解釈されます。検索エンジンを見てみると、これに気付くでしょう。

これを防ぐには、クエリ文字列に追加する前にafsfgwesar+sereテキストをエンコードします。これを行うには、HttpUtility.UrlEncodeを使用します。HttpUtility.UrlDecodeを使用して読み戻します。

詳細については、http: //msdn.microsoft.com/en-us/library/4fkewx0t.aspxを参照してください。

于 2010-01-30T13:35:48.660 に答える