2011-06-27 53 views
1

在初始重定向之後,是否可以在不使用301/302重定向的情況下將MVC3請求重定向到區域路由?讓我解釋一下我想要的,因爲這對我來說聽起來很複雜。重定向到ASP.Net而不影響Url的區域MVC3

基本流程:

  1. 請求:http://somedomain.com/?ContextId=00001
  2. 重定向
    • 即成從區域01的內容;控制器家;動作指數
    • CONTEXTID查詢字符串項從URL刪除

所以最終的結果是,所有的請求http://somdomain.com初始CONTEXTID設置將利用區域,直到這樣的時刻,當一個新的後已指定ContextId。

我可以使用IHttpModule捕獲查詢字符串,然後在會話中爲後續請求設置一些值,但隨後我需要發出RedirectToXXXX()調用來執行重定向。這將產生一個包含該區域的URL,然後我需要在將來識別這些「映射」請求以防止重定向循環。 Euwwww。

我已經查看了自定義路由約束,但是路由在管道中發生得很早,導致沒有會話可用,這使得難以「知道」約束所連接的路由是否是我想要的路由。特別是因爲我不想在這個階段包含在請求URL中的區域。

這可能嗎?任何想法都會受到歡迎。

+1

您可以在您的路線限制中使用Cookie嗎? – tvanfosson

+0

現在只是使用cookie進行測試。不知道它會適合我們的最終解決方案。感謝您的建議 - 將報告與調查結果。 –

+0

@tvanfosson似乎可以接受cookies,並且它們在RouteConstraint中很好地工作。由於路線圖中缺少命名空間,導致網址404ing輕微滑動。謝謝。如果你想發佈這個答案,我會給它一個答案:) –

回答

0

您可以將上下文存儲在cookie中,並使用RouteConstraint中的cookie值強制匹配適當的區域。