C# 如何将子站点请求映射到父站点?

C# 如何将子站点请求映射到父站点?,c#,asp.net-mvc,asp.net-core,iis,web-config,C#,Asp.net Mvc,Asp.net Core,Iis,Web Config,我们有一个单一的ASP.NET应用程序,比如说。 在它的内部,有许多位于path/api的控制器,比如 现在,我们正试图将整体分割成不同的服务。这些服务是独立的.NET核心应用程序。它们将逐渐替换/api路径中的所有控制器。因此,虽然monolith中的一些控制器应该仍在工作,但我们需要添加单独的应用程序来处理请求,例如 该站点托管在IIS中。如果我们为站点创建一个子应用程序api,IIS将开始将所有请求映射到/api/无论什么,映射到api子应用程序,而不是映射到父站点。我们如何在将其他

我们有一个单一的ASP.NET应用程序,比如说。 在它的内部,有许多位于path/api的控制器,比如

现在,我们正试图将整体分割成不同的服务。这些服务是独立的.NET核心应用程序。它们将逐渐替换/api路径中的所有控制器。因此,虽然monolith中的一些控制器应该仍在工作,但我们需要添加单独的应用程序来处理请求,例如

该站点托管在IIS中。如果我们为站点创建一个子应用程序api,IIS将开始将所有请求映射到/api/无论什么,映射到api子应用程序,而不是映射到父站点。我们如何在将其他路径映射到父整体时,仅对api子应用程序中实际存在的路径发出IIS映射请求

到目前为止,我们已经尝试了……在system.webServer中的monolith的web.config中,我们向handlers部分添加了一个条目,如下所示:

<add name="api-order" verb="*" path="api/order*" type="Monolith.Controllers.Api.Order" preCondition="managedHandler"/>

有了这个,我们想让IIS将/api/order请求映射到monolith,从而忽略现有的api子应用程序

但是,IIS首先选择子应用程序,然后检查其web.config


那么,有没有办法欺骗IIS,使其只将某些请求映射到api子应用程序

如果您将应用程序部署在api/order上,而不仅仅是api上,该怎么办?这样,对api/user的调用仍然会转到monolith controller?对/api/user的请求会转到api的用户子应用程序。对/api/order的请求到达api子应用程序,并得到404 Not Found响应。可能是因为控制器响应
https://example.com/api/
+控制器路径?尝试从一个控制器路径定义中删除
api
。如果控制器过去匹配
api/order/new
,现在应该匹配
order/new
,因为IIS已经路由了api。您误解了我的问题。在api子应用程序下只有用户服务,它成功地处理对/api/user的请求。但是没有订单服务,也没有订单子应用程序。对/api/订单的请求必须在monolith中处理。但是它们被IIS映射到api子应用程序。我们需要一种让IIS将这些请求映射到monolith的方法。我明白了,在我看来,您写道:“如果我们为站点创建子应用程序api”,我只想问“如果我们为站点创建子应用程序api**/用户**”怎么办“如果您按照api/顺序而不仅仅是api部署应用程序怎么办?”?这样,对api/user的调用仍然会转到monolith controller?对/api/user的请求会转到api的用户子应用程序。对/api/order的请求到达api子应用程序,并得到404 Not Found响应。可能是因为控制器响应
https://example.com/api/
+控制器路径?尝试从一个控制器路径定义中删除
api
。如果控制器过去匹配
api/order/new
,现在应该匹配
order/new
,因为IIS已经路由了api。您误解了我的问题。在api子应用程序下只有用户服务,它成功地处理对/api/user的请求。但是没有订单服务,也没有订单子应用程序。对/api/订单的请求必须在monolith中处理。但是它们被IIS映射到api子应用程序。我们需要一种方法让IIS将这些请求映射到monolith。我明白了,在我看来,你写道:“如果我们为站点创建子应用程序api”,我只是问“如果我们为站点创建子应用程序api**/用户**”,该怎么办