0

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

网络项目
- 控制器
    - API
        - 订阅控制器
        - 用户控制器
    - 订阅控制器
- 意见
    - 订阅
        - 确认.cshtml
        - ConfirmationSuccessfull.cshtml   

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

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

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

我考虑过以两种不同的方式限制这一点:

  1. 将应用程序保留在一个 IIS 站点中,同时响应两个域并检查请求附带的主机标头并查看路由的位置。如果来自 api 域的网站调用返回 404。这里的问题是域限制在代码中有些“硬编码”,并且还必须在代码中处理这种基础设施。
  2. 将应用程序分离在两个不同的 webproject 中,并将它们部署在 IIS 中的不同网站中。这是处理需求的最简洁的方法,但它带来了我不想处理的复杂性。我将不得不使用两个不同的代码和部署过程来管理两个不同文件夹中的两个不同站点。

那么,是否有第三种选择,最好是两全其美?

谢谢!

4

1 回答 1

0

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

于 2013-01-24T08:56:50.020 回答