如何在限制访问的同时将Web Api和Web App发布到两个域中?

时间:2013-01-23 17:53:38

标签: architecture asp.net-mvc-4 asp.net-web-api iis-7.5

我有一个具有以下结构的Web项目项目:

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

我们假设我正在处理订阅,因此我的API公开了创建新订阅或取消订阅的方法。这些方法是从外部应用程序调用的。

作为要求的一部分,用户需要确认他的订阅。这是通过访问URL进行的,并且在确认后,用户将获得成功页面。

接下来是:我希望API在一个地址中公开,例如(http://api.myapp.com/subscription - >用于订阅api控制器)和项目的确认部分在另一个地址中(http://myapp.com/subscription/confirm - >用于订阅确认)但我希望能够访问API网址中的网站部分,反之亦然。

我想过用两种不同的方式来限制它:

  1. 将应用程序保留在一个IIS站点中,以回答这两个域,并检查请求附带的主机头并查看路由的位置。如果来自api域的网站调用返回404.这里的问题是域代码限制在代码中有点“硬编码”,并且还必须在代码中处理这种基础结构。
  2. 将应用程序分隔在两个不同的Web项目中,并将它们部署在IIS中的不同网站中。这是处理要求的最简洁方法,但它带来了我不愿意处理的复杂性。我必须在两个不同的文件夹中管理两个不同的站点,其中包含两个不同的代码和部署过程。
  3. 那么,是否有第三种选择,最好是两全其美?

    谢谢!

1 个答案:

答案 0 :(得分:0)

选项1的实施非常简单,不需要任何真正的基础设施。只是一个简单的自定义路由约束我试图说明主机头如何用于控制前一个问题How to configure Webapi Selfhosted for multiple HostHeaders中的路由。