0

ASP.NET 3.5、IIS7

Global.asaxのApplication_BeginRequestで、クエリ文字列を使用せずに、リクエストのURLから埋め込まれている完全に別個のURLを抽出する必要があります。

私が思いついた解決策は、次のように、ターゲットURL全体をディレクトリであるかのように16進エンコードすることでした。

http://localhost/687474703A...etc...732E6D7033/irrelevantFilename.txt

これは、 ASP.NET実装が260文字を超えるURLパスを許容しないIIS7では失敗します。

私のコードは、リクエストURLの生成方法と、そこにターゲットURLを埋め込む方法を制御しますが、そのターゲットURL値(サードパーティのURL)を制御することはできません。

このターゲットURLをリクエストURLにどの程度うまく埋め込むことができますか?

4

1 に答える 1

2

URL エンコードすることも、base-64 エンコードすることもできます。どちらも通常、16 進エンコードよりもコンパクトです。

注: URL が約 200 文字を超える場合、その 260 文字の制限は何があっても問題になります。また、URL が 260 文字を超える場合は、計算できます :-)

ただし、後で別のファイルが必要になる理由はよくわかりません。404 ハンドラーを使用するか、リクエストごとにすぐに解析することができます。

ところで: オプションがある場合は、Cookie を使用するか、POST 引数として URL を埋め込む方がよいでしょう。それができない場合は、 http://bit.ly/などの URL 短縮サービスの使用を検討することもできます。これらの URL は非常に短いものです。それはすべて、そもそも URL がどこから来るかに依存します。これらの URL の生成を制御できる場合は、それぞれに短い ID を付けてテーブルに保存し、URL を「解析」するときに検索してみませんか?

于 2010-01-19T00:07:57.830 に答える