我想构建一个具有两个监听入口点的解决方案,其路径部分相同,但目的和响应不同。因此,我严格遵循 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();
});
映射所有引用项目的所有控制器。他们是否可以调整某些控制器到特定入口点的映射?