古いWebアプリケーションを、構造の異なる新しいWebアプリケーションに置き換えています。
古いアプリへのさまざまなリンクをブックマークしたユーザーがいるため、新しいアプリの仮想ディレクトリパスを変更できません。
このブックマークを持っているユーザーがいるとしましょう。
http://server/webapp/oldpage.aspx?data=somedata
新しいアプリは同じ仮想ディレクトリに存在し、古いアプリを置き換えますが、oldpage.aspxはなくなり、代わりにレイアウトが異なりますが、古いURLのパラメーターが必要です。
そこで、404エラーをredirectfrombookmark.aspxにリダイレクトするように設定しました。ここで、リクエストの処理方法を決定します。
問題は、私が受け取る唯一のパラメーターが「aspxerrorpath = / webapp / oldpage.aspx」であり、「data」パラメーターではなく、リクエストを正しく処理するために必要なことです。
404ハンドラーで完全な「元の」URLを取得する方法はありますか?
編集:答えを読んで、私は質問を十分に明確にしなかったようです:
- ユーザーは多くの異なるページ(oldpage1、oldpage2など)をブックマークしているので、私はそれらを平等に扱う必要があります。
- 各古いページのパラメーターはほぼ同じであり、特定のパラメーターのみが必要です。
- 「新しい」アプリケーションの「古い」仮想ディレクトリ名を再利用したい。
- 検索ボットなどは問題ではありません。これは動的コンテンツを含む内部アプリケーションであり、非常に頻繁に期限切れになります。
問題は、古い名前で「新しい」アプリケーションに空のページを作成せずに、OnLoadにRequest.Redirectを作成せずに、これを実行できるかどうかです。つまり、これは404メカニズム、またはGlobal.asaxなどのイベント処理を使用して実行できます。