Jak odseparować routing od klasy Startup w Core 3.1

0

Jak odseparować routing od klasy Startup w ASP.NET Core 3.1 ? Defaultowa trasa w Core 3.1 zdefiniowana jest przez middleware w Startup:

app.UseEndpoints(endpoints =>
{
   ndpoints.MapControllerRoute(
   name: "default",
   pattern: "{controller=Blog}/{action=Index}/{id?}");
});

w Core 2.0 mogło się to tak zrobić:

public static class RouteConfig
{
    public static IRouteBuilder Use(IRouteBuilder routeBuilder)
    {
        //eg sample for defining Custom route
        //routeBuilder.MapRoute("blog", "blog",
        //    defaults: new { controller = "Home", action = "Index" });

        routeBuilder.MapRoute(name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");

        return routeBuilder;
    }
}

1

Ale w sensie przenieść po za klase startup? To możesz np zrobić jakiś ExtensionMetod do IApplicationBuilder.
np:

public static IApplicationBuilder AddEndpoints(this IApplicationBuilder app)
        {
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
            return app;
        }
0

Działa

public static class RouteConfig
{
    public static void AddEndpoints(this IApplicationBuilder app)
    {
        app.UseEndpoints(endpoints =
        {
            endpoints.MapControllerRoute(
                name: "default",
               pattern: "{controller=Default}/{action=Index}/{id?}");
        });
    }
}

     public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
     {
         if (env.IsDevelopment())
         {
             app.UseDeveloperExceptionPage();
         }
         else
         {
             app.UseExceptionHandler("/Blog/Error");
             app.UseHsts();
         }
         app.UseHttpsRedirection();
         app.UseStaticFiles();

         app.UseRouting();

         app.UseAuthorization();
         //app.UserAthentication();


        RouteConfig.AddEndpoints(app);
         }

}

Chociaż nie jestem pewny czy dobrze, że nic nie zwraca ta metoda rozszerzona?

1

Nie tak się używa metody rozszerzonej

RouteConfig.AddEndpoints(app)

tylko tak:

app.AddEndpoints();

I nie musi nic zwracać chyba, że chcesz dalej mieć łańcuch wywołań
np:

app.AddEndpoints().InnaRozszerzona();

1 użytkowników online, w tym zalogowanych: 0, gości: 1