2011-06-27 10 views
1

初期リダイレクト後に301/302リダイレクトを使用せずにMVC3リクエストをエリアルートにリダイレクトすることはできますか?それが私にとっても複雑に聞こえるので、私が欲しいものを説明しましょう。ASP.Net MVC3のURLに影響を与えずにエリアにリダイレクト

基本フロー:

  1. 要求:http://somedomain.com/?ContextId=00001
  2. リダイレクト
    • エリア01からコンテンツを提供します。コントローラーの家;アクションインデックス
    • CONTEXTIDクエリ文字列のエントリは、URLから削除

だから、最終的な結果は、そのときに新しいのような時間までの領域を利用します設定された初期CONTEXTID後http://somdomain.comへのすべての要求ContextIdが指定されています。

IHttpModuleを使用してクエリ文字列を取得し、その後のリクエストでセッションの値を設定することができますが、RedirectToXXXX()コールを発行してリダイレクトを行う必要があります。これにより、領域が含まれたURLが生成され、その後、リダイレクトループを防ぐために、このような「マップされた」リクエストを特定する必要があります。うーん。

私はカスタムルートの制約を見てきましたが、ルーティングはパイプラインの早い段階で行われ、利用可能なセッションがないため、制約が付いているルートが必要なものかどうかを「知る」ことが困難になります。特に、この段階では、リクエストしているURLにそのエリアが含まれないようにしたいからです。

これは可能ですか?どんな考えも大歓迎です。

+1

あなたのルート制約にクッキーを使用できますか? – tvanfosson

+0

クッキーを使用してテストしています。最終的なソリューションには適しているかどうかはわかりません。提案してくれてありがとう - 調査結果を報告する。 –

+0

@tvanfossonはクッキーが受け入れられると思われ、彼らはRouteConstraint内でうまく機能しました。ルートマップに名前空間がないため、URL 404で微妙な笑い声がありました。ありがとう。答えとして投稿したい場合は、私はそれを確認してください:) –

答えて

0

コンテキストをクッキーに格納し、RouteConstraintのCookie値を使用して、適切な領域に一致させることができます。

関連する問題