gpt4 book ai didi

asp.net-core - 使用库中的可配置路径映射 Controller 路由

转载 作者:行者123 更新时间:2023-12-04 13:35:15 26 4
gpt4 key购买 nike

我的实用程序库提供了多种操作,这些操作应该可用于不同的 ASP.Net Core 应用程序。至此,IApplicationBuilder的一个扩展方法用于配置路由:

public static void UseUtility(this IApplicationBuilder app)
{
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
"default",
"api/{controller=Home}/{action=Index}/{id?}");
endpoints.MapDefaultControllerRoute().RequireAuthorization();
}
);
}
为了使用可配置的路径(例如 utility/ )注册这些路由,托管应用程序在其 IApplicationBuilder 上调用 Map :
app.Map("utility", hostingApp => { hostingApp.UseUtility(); });
问题是,根据 Routing in ASP.NET Core库不应该调用 UseEndpoints,而是为 IEndpointRouteBuilder 提供扩展方法.所以我尝试了以下方法:
public static void MapUtility(this IEndpointRouteBuilder routeBuilder)
{
routeBuilder.MapControllerRoute(
"default",
"api/{controller=Home}/{action=Index}/{id?}");
routeBuilder.MapDefaultControllerRoute().RequireAuthorization();
}
托管应用程序在 Configure() 中调用它
app.UseEndpoints(endpoints =>
{
endpoints.MapUtility();
}
);
这里有两个问题:
  • 如何添加 utility/到路由路径的开头?
  • 如何仅使用给定路由注册我的实用程序库的端点/ Controller ,而不是托管应用程序的 Controller ?
  • 最佳答案

    1.创建UtilityImporter添加静态方法 Endpoints .

    public static class UtilityImporter
    {
    public static void Use(IEndpointRouteBuilder endpoints)
    {
    endpoints.MapAreaControllerRoute(name: "area_utility", areaName: "Utility",
    pattern: "utility/{controller}/{action}/{id?}", defaults: new { controller = "Home", action = "Index" });

    }
    }
    2.使用 UtilityImporterStartup.cs .
            app.UseEndpoints(endpoints =>
    {
    endpoints.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

    UtilityImporter.Use(endpoints);

    });
  • 添加您的 controllersAreas/Utility/Controllers/这里。

  • enter image description here
    测试截图:
    enter image description here

    关于asp.net-core - 使用库中的可配置路径映射 Controller 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62531588/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com