0

(\w+)*要求されたURLを取得し、正規表現を使用して単語のビットを抽出し、それらのビットをスペースで区切って検索エンジンに送信して、提案されたページのリストを生成する404ページのキャッチオールアクションメソッドを作成しています。

問題は、ServerVariables["UNENCODED_URL"]ここのActionメソッドでは使用できないように見えることです。ただし、他のサーバー変数も使用できます。

どちらも利用できるServerVariables["URL"]、と組み合わせて使用​​できます。ServerVariables["QUERY_STRING"]ただし、状況によっては、ユーザーの意図に関する有効な情報が含まれている可能性のあるURLの部分が除外される場合があります。

たとえば、不正な形式のURLが

/test/007/words/something-with-a-dot.xyz/these-words-are-neglected/?stuff-in-querystring

次に、「URL」と「QUERY_STRING」は次のように検索されます"/test/007/words/something-with-a-dot.xyz""stuff-in-querystring"

「URL」は、ファイル拡張子のように見えるもの以降は、かなり率直にすべてを無視します。したがって、それだけでは不十分です。

では、UNENCODED_URLはどうなっているのでしょうか。
そして、どうすれば同等のものを入手できますか?

4

1 に答える 1

1

HTTP_URL変数を試しましたか?生のエンコードされたURL、たとえば「/vdir/default.asp?querystring」をMSDNから返すように見えます。

ソース

また、コントローラーのアクションメソッドを使用している場合は、SERVER [someProperty]の代わりにHttpContextを使用できます(すべきですか?)。何かのようなもの:

var Url = HttpContext.Request.RawUrl;

これは、現在のリクエストの完全なURLを返します。

于 2011-10-14T13:15:45.197 に答える