2

Web フォーム コンテキストでカスタム ルーティングを使用しています。いくつかのタイトル (カスタム ルートの一部) に疑問符の文字が含まれています。このテキスト ("Question?") を URL エンコードしてルートに渡すと、HTTP ERROR CODE 400 が返されます。どうやら、URL エンコードされたテキストがルーティング マネージャーを混乱させているようです。

誰かがこれについて文脈と説明を提供できますか? さらに、これらのルート データを URL エンコードする必要はなく、単に問題のある文字を削除する必要があると考えています。URL デコード/エンコードを使用しないことによるセキュリティ上のリスクはありますか? で、問題キャラは?リストは役に立ちます。

ありがとう!

更新: カスタム ルートのクエリ文字列で % 文字が許可されていないようです。この問題に関する良い意見をお待ちしております!

4

1 に答える 1

1

これは、MS がUrlEncode() 「URL エンコーディングにより、すべてのブラウザが URL 文字列のテキストを正しく送信できるようにすること」について述べていることです。クエスチョン マーク (?)、アンパサンド (&)、スラッシュ マーク (/)、およびスペースなどの文字は、一部のブラウザーで切り捨てられたり、破損したりする場合があります。その結果、これらの文字はタグまたはクエリ文字列でエンコードする必要があり、ブラウザが要求文字列で文字列を再送信できます。

また、クエリ パラメータのみをエンコードする必要があります。そうしないと、結果に問題が発生します。たとえば、このリンクがある場合

http://www.contoso.com/articles.aspx?title=ASP.NET+Examples

そして、全体をエンコードすると、次のようになります

http%3a%2f%2fwww.contoso.com%2farticles.aspx%3ftitle%3dASP.NET%2bExamples

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

バージョン 4.0 に付属する ASP.net ルーティングを使用します。サンプル コードは次のとおりですhttp://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs-2010-and-net-4- 0-series.aspx . リンクを非常に簡単に操作できます。

更新: Microsoft は IIS7 にいくつかの変更を加えたため、ルーティングで問題が発生する可能性があります。そのため、アプリケーション プールの「マネージド パイプライン モード」の設定を統合からクラシックに変更してみてください。

于 2010-06-01T07:47:38.350 に答える