在一台主机上托管两个具有相同路径的 ASP.NET Core 应用程序

问题描述 投票:0回答:1

我想构建一个具有两个监听入口点的解决方案,其路径部分相同,但目的和响应不同。因此,我严格遵循 https://khalidabuhakmeh.com/hosting-two-aspnet-core-apps-in-one-host 上的介绍 - 对两个“初创公司”使用不同的端口等等。不幸的是,运行环境通过使用适当的端口调用双重现有路径而失败。第二个入口点的启动文件、控制器和进一步配置位于附加项目中。

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

        public static IHostBuilder CreateSecondBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("http://*:5500").UseStartup<SecondEndpoint.Startup>();

                });

错误信息是

连接id“xxx”,请求id“xxx”:应用程序抛出了未处理的异常。 Microsoft.AspNetCore.Routing.Matching.AmbigouslyMatchException:请求匹配多个终结点。火柴: Controllers.FruitsController.GetFruits (...) SecondEndpoint.Controllers.FruitsController.GetFruits (...)

在我看来,错误在于

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });

映射所有引用项目的所有控制器。他们是否可以调整某些控制器到特定入口点的映射?

asp.net-core asp.net-core-webapi
1个回答
0
投票

我能够使用此链接中给出的解决方案解决此问题。

检查此在.Net Core中为Web API添加/跳过ApiController

本质上,您只需在配置服务方法中为每个启动类映射所需的控制器。

© www.soinside.com 2019 - 2024. All rights reserved.