Explicar el método del área ASP.NET Core 3.0 y la configuración de enrutamiento en detalle

La configuración de enrutamiento en ASP.NET Core 3.0 es diferente de 2.0

Uno, registro de servicio MVC

ASP.NET Core 3.0 agrega una nueva opción para registrar soluciones MVC internas Startup.ConfigureServices.

Hay tres nuevos métodos de extensión de nivel superior IServiceCollectiondisponibles en el programa MVC . Las plantillas utilizan estos nuevos métodos en su lugar UseMvc. Sin embargo, AddMvcsigue igual que en la versión anterior.

El siguiente ejemplo agregará soporte para controladores y funciones relacionadas con API, pero no para vistas o páginas. La plantilla de API usa este código:

public void ConfigureServices(IServiceCollection services)
{
    
    
services.AddControllers();
}

El siguiente ejemplo agregará soporte para controladores, funciones relacionadas con API y vistas, pero no para páginas. La plantilla de aplicación web (MVC) usa este código:

public void ConfigureServices(IServiceCollection services)
{
    
    
services.AddControllersWithViews();
}

El siguiente ejemplo agrega compatibilidad con páginas de Razor y compatibilidad mínima con el controlador. La plantilla de la aplicación web utiliza este código:

public void ConfigureServices(IServiceCollection services)
{
    
    
 services.AddRazorPages();
}

También nuevos métodos que se pueden combinar. El siguiente ejemplo es equivalente a llamar a AddMvcASP.NET Core 2.2:

public void ConfigureServices(IServiceCollection services)
{
    
    
 services.AddControllers();
 services.AddRazorPages();
}

Dos, Startup.Configurecolocación

Generalmente no recomendado:

  • Agregar UseRouting.
  • Si se llama a la aplicación UseStaticFiles, se colocará UseStaticFilesantes UseRouting.
  • Si la aplicación utiliza las funciones de autenticación / autorización, como AuthorizePageo [Authorize], will UseAuthenticationy UseAuthorizationafter UseRouting.
  • Si la aplicación utiliza CORSfunciones como, por ejemplo [EnableCors], se colocará el UseCorssiguiente paso.
  • Reemplazar UseMvco UseSignalRcon UseEndpoints.

La siguiente es una Startup.Configureaplicación típica de ASP.NET Core 2.2:

public void Configure(IApplicationBuilder app)
{
    
    
 ...
 
 app.UseStaticFiles();
  
 app.UseAuthentication();
 
 app.UseSignalR(hubs =>
 {
    
    
  hubs.MapHub<ChatHub>("/chat");
 });
 
 app.UseMvc(routes =>
 {
    
    
  routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
 });
}

Esto sucede dentro del mapeo del controlador actual UseEndpoints.
Agregue MapControllerssi la aplicación usa enrutamiento de atributos. Como la ruta incluye muchos marcos ASP.NET Core 3.0o compatibilidad con versiones superiores, agregue el controlador de ruta de atributo para participar.
Será lo siguiente:
MapRouteel uso de MapControllerRoute
MapAreaRouteuso MapAreaControllerRoute
debido a la ruta ahora incluye más que solo soporte para MVC, y ha cambiado los términos de estos métodos para que se establezca claramente que lo hicieron. MapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRouteSe aplican en el orden en que se agregan, como en el enrutamiento tradicional . Pon la primera ruta más específica (como la ruta de un área determinada).
En el siguiente ejemplo: Se
MapControllersagregó compatibilidad con el controlador para el enrutamiento de atributos.
MapAreaControllerRouteAgregue el enrutamiento tradicional del controlador al área.
MapControllerRouteAgregue el enrutamiento regular del controlador.
Ahora el mapeo Razorocurre dentro de la página UseEndpoints.
Agregar MapRazorPagessi la aplicación usa Razorla página. Desde el punto final de la ruta, incluida la adición de soporte para muchos marcos, la Razorpágina ahora participa.

Startup.ConfigureCódigo en Asp.net Core 3.0 después de la actualización :

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
    
    
   if (env.IsDevelopment())
   {
    
    
    app.UseDeveloperExceptionPage();
   }
   else
   {
    
    
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
   }
 
   app.UseHttpsRedirection();
   app.UseStaticFiles();
 
   app.UseCookiePolicy();
 
   app.UseRouting();
 
   app.UseAuthorization();
 
   app.UseEndpoints(endpoints =>
   {
    
    
    endpoints.MapControllerRoute(
     name: "default",
     pattern: "{controller=Home}/{action=Index}/{id?}");
 
    endpoints.MapAreaControllerRoute(
     name: "areas", "areas",
     pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
   });
  }

Si desea particionar la ruta, el controlador Controllerprimero debe agregar Areay Routeetiquetar, o no puede, como en el controlador Asp.net Core 2.0 y el enrutamiento automático Action. El código de muestra es el siguiente:

namespace WebApplication1.Areas.CMS.Controllers
{
    
    
 [Area("CMS")]
 [Route("CMS/[controller]/[action]")]
 public class NewsController : Controller
 {
    
    
  public IActionResult Index()
  {
    
    
   return View();
  }
  public IActionResult List()
  {
    
    
   return View();
  }
 }
}

Estas dos oraciones deben agregarse [Area("CMS")]、[Route("CMS/[controller]/[action]")]

Supongo que te gusta

Origin blog.csdn.net/WuLex/article/details/112638963
Recomendado
Clasificación