【问题标题】:ASP.NET Core 3.1 Host Sub application within main application主应用程序中的 ASP.NET Core 3.1 主机子应用程序
【发布时间】:2020-02-14 20:18:05
【问题描述】:

假设主要的网络应用是:https:\mywebapp.com

假设我有单独的 Web API 项目,它有多个服务 (api\service1, api\service2, )

为此我创建了 2 个项目

  1. 主应用程序的 ASP.NET Core MVC 项目 - https:\mywebapp.com
  2. ASP.NET Core Web API 项目(服务 1、服务 2)

我应该如何在 Azure 中设置我的项目并发布配置文件,以便我拥有以下内容

  1. 主应用程序 (https:\mywebapp.com) - 很好,我已经发布了配置文件,并且可以在 Azure 中正确发布
  2. 服务 1 网址 (https:\mywebapp.com\api\service1)
  3. 服务 2 网址 (https:\mywebapp.com\api\service2)

如何实现 pt 2 和 pt3 并将我的 Web API 项目作为我的主 Web 应用程序中的子应用程序?并共享同一个 URL\api ?

【问题讨论】:

  • 为什么不用 API 控制器创建单个 MVC 应用程序?
  • MVC 是一个主要的 Web 应用程序,我希望 API 项目尽可能轻巧,仅使用 API 控制器...无需使用 MVC 项目选项初始化 API 项目...并查看具体代码
  • 当你有 100 个服务,你打算部署 100 个应用程序时,你会做什么?我认为最好将 Web 应用程序扩展到某个点,然后水平执行以减少每个实例的执行次数
  • 不...我只是举了一个例子,但总的来说,我宁愿有一个单独的 Web App MVC 项目,它在启动期间加载视图设置和剃须刀选项,因为代码对于 MVC 来说很重并且有另一个只有控制器的项目...这有助于提高 Web API 的性能...我认为没有理由将这两者混合...
  • 虚拟目录就是你要找的。 stackoverflow.com/questions/43073570/…

标签: c# asp.net-core asp.net-web-api asp.net-core-mvc azure-web-app-service


【解决方案1】:

您可以在同一个 azure web 应用程序上创建虚拟目录。

当您第一次在 azure webapp 中创建 Core MVC 项目时,转到配置 > 路径映射并配置虚拟目录 site/api。

当我们将 Core api 发布到 Azure 时,我们需要在“连接”选项卡的“站点名称”和“目标 URL”部分中包含虚拟目录路径。

因为 Core 3.1 web api 包含一个或多个从 ControllerBase 派生的控制器类。 Web API 项目模板提供了一个启动控制器:

[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase

所以,我们可以通过 controllerName 来访问它。因为它是子目录,所以Url路径是api\controllerName。这是输出:

【讨论】:

  • 感谢@Jaey Cai...我按照建议创建了虚拟目录并发布了 Web API 项目。发布成功到 https:\\mywebapp\api 。但现在对于主 Web 应用程序... https:\\mywebapp 我收到以下错误... HTTP 错误 500.35 - ANCM 同一进程中的多个进程内应用程序
  • 删除整个 .vs 文件夹并重新启动您的解决方案。参考这个thread。
  • 现在有更新吗?如果它对你有帮助,你可以接受它作为答案。
  • 不,还没有...看起来虚拟目录不适用于 asp.net core 3.1。我一直在尝试 InProcess、OutOfProcess... 删除 .vs 文件夹...但是使用上述方法可以正确发布应用程序,但一次只能运行一个应用程序...主应用程序或子应用程序...我获取 OutOfProcess 不支持的 ANCM 混合托管模型或使用 InProcess 获取 500.35 ANCM 多个进程内应用程序
  • 工作进程不能在同一个进程中运行多个进程内应用。要修复它,请在单独的应用程序池中运行应用程序。
猜你喜欢
  • 2017-06-19
  • 2020-04-25
  • 2022-01-27
  • 2020-07-07
  • 1970-01-01
  • 2016-12-13
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多