我們已經得到了出生在.NET 1.1/IIS6天長時間運行ASP.NET web的表單應用程序。我們現在在.NET4.5/IIS7上,但是我們沒有對MVC做任何事情。URL重寫和Web API
我們提供了一個目錄給客戶,並給他們,他們可以使用的URL:
www.ourhost.com/customername
使用IHttpModule的,我們開發我們拉「客戶名稱」出來的URL找到在數據庫中的用戶自定義。然後,該客戶的ID存儲在頁面的上下文中*,並被網站上的幾乎所有頁面用於爲該客戶定製內容。在這個過程之後,上面的URL會被重寫,並處理爲
www.ourhost.com/index.aspx
具有通過它的上下文獲得了客戶的ID的Index.aspx,它可以做它的事。
這個偉大的工程,我們支持幾千個客戶了。重寫邏輯相當複雜,因爲它驗證了客戶帳戶,如果客戶無效,則重定向到'呃哦'頁面,如果客戶沒有支付,則重定向到'找到經銷商'頁面等。
現在我想構建一些Web API控制器,MVC風格的重寫讓我擔心。我看到很多例子,其中重寫發生,使URL的這樣的工作:
www.ourhost.com/api/{controller}
但我仍然需要這些Web API「調用」在客戶的情況下發生的。我們的頁面使用JSON/AJAX異步調用變得更加複雜,但在回答這些調用時,我仍然需要客戶環境。我想URL的是
www.ourhost.com/customername/api/{controller}
但我難倒如何配置路由要做到這一點,並將它與我們的IHttpModule發揮很好。
這甚至可能嗎?
*更新:當我說「存儲在頁上下文中的」我的意思是與包括字典,我可以存儲一些網頁/請求特定的數據每個Web請求關聯的HttpContext。
當你說「存儲在頁面的上下文中」 - 你是指'Session'對象,還是你直接寫入某種'Cookie'?既然你標記了這個'web-api',它就會有點不同。 – 2013-04-24 20:01:19
@Troy:感謝您的評論 - 我已經通過澄清更新了我的問題。 – n8wrl 2013-04-25 12:11:09
明白了 - 您正在使用'HttpContext.Current.User'來跟蹤您登錄的用戶是誰?你如何將它保存到後續調用中,該調用在URL中不包含用戶的用戶名? – 2013-04-25 16:41:54