2013-01-23 32 views
0

我有以下結構的web項目項目:如何在重新訪問訪問權限的同時將WebApi和WebApp發佈到兩個域中?

 
WebProject 
- Controllers 
    - API 
     - SubscriptionController 
     - UserController 
    - SubscriptionController 
- Views 
    - Subscription 
     - Confirmation.cshtml 
     - ConfirmationSuccessfull.cshtml 

假設我處理訂閱,所以我的API公開的方法來創建新的訂閱或取消一個。這些方法從外部應用程序調用。

作爲用戶需要確認其訂閱的一部分要求。這是通過訪問URL並在確認後用戶將獲得成功頁面。

這裏有一個問題:我希望將API暴露在諸如(http://api.myapp.com/subscription-> for subscription API控制器)和項目的確認部分在另一個地址(http://myapp.com/subscription/confirm - >用於訂閱確認),但我不要希望能夠訪問API網址中的網站部分,反之亦然。

我想到了兩種不同的方式限制這樣的:

  1. 保持應用程序在一個IIS站點回答兩個域,並檢查與請求附帶的主機頭,並期待在哪裏路線。如果一個來自api域的網站調用返回一個404。這裏的問題是在代碼中對域限制有些「硬編碼」,並且不得不在代碼中處理這種類型的基礎設施。
  2. 將應用程序分成兩個不同的Web項目,並將它們部署到IIS中的不同網站中。這是處理需求的最簡潔的方式,但它帶來了我不願意處理的複雜性。我將不得不在兩個不同的文件夾中用兩個不同的代碼和部署過程管理兩個不同的站點。

那麼,有沒有第三種選擇,最好是兩全其美?

謝謝!

+0

你有沒有嘗試過使用MVC領域? –

+0

你可以在路由級別或在IIS級別控制它,我不認爲有中間術語。選項1(處理路由)有什麼問題?如果您擔心硬編碼基礎架構配置,只需將它們提升到web.config –

+0

@ThiagoCustodio我不認爲MVC區域符合他的要求。 WebApi不使用與MVC相同的路由。 –

回答