Expliquer en détail la méthode de la zone ASP.NET Core 3.0 et la configuration du routage

La configuration de routage dans ASP.NET Core 3.0 est différente de 2.0

Un, enregistrement du service MVC

ASP.NET Core 3.0 ajoute une nouvelle option pour enregistrer les solutions MVC internes Startup.ConfigureServices.

Trois nouvelles méthodes d'extension de niveau supérieur sont IServiceCollectiondisponibles sur le programme MVC . Les modèles utilisent à la place ces nouvelles méthodes UseMvc. Cependant, il AddMvccontinue comme dans la version précédente.

L'exemple suivant ajoutera la prise en charge des contrôleurs et des fonctions liées à l'API, mais pas pour les vues ou les pages. Le modèle d'API utilise ce code:

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

L'exemple suivant ajoutera la prise en charge des contrôleurs, des fonctions liées à l'API et des vues, mais pas pour les pages. Le modèle d'application Web (MVC) utilise ce code:

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

L'exemple suivant ajoute la prise en charge des pages Razor et une prise en charge minimale du contrôleur. Le modèle d'application Web utilise ce code:

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

Aussi de nouvelles méthodes qui peuvent être combinées. L'exemple suivant équivaut à appeler AddMvcASP.NET Core 2.2:

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

Deux, Startup.Configureplacement

Généralement déconseillé:

  • Ajouter UseRouting.
  • Si l'application est appelée UseStaticFiles, elle sera placée UseStaticFilesavant UseRouting.
  • Si l'application utilise les fonctionnalités d'authentification / d'autorisation, telles que AuthorizePageou [Authorize], sera UseAuthenticationet UseAuthorizationaprès UseRouting.
  • Si l'application utilise des CORSfonctions, telles que [EnableCors], l' UseCorsétape suivante sera placée .
  • Remplacez UseMvcou UseSignalRpar UseEndpoints.

Voici une Startup.Configureapplication ASP.NET Core 2.2 typique:

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?}");
 });
}

Cela se produit dans le mappage actuel du contrôleur UseEndpoints.
Ajoutez MapControllerssi l'application utilise le routage d'attributs. Comme la route comprend de nombreux frameworks ASP.NET Core 3.0ou une prise en charge de version supérieure, ajoutez l'attribut route controller est de participer.
Sera la suivante:
MapRoutel'utilisation de l' MapControllerRoute
MapAreaRouteutilisation en MapAreaControllerRoute
raison de l'itinéraire comprend désormais plus que le simple support de MVC, et a changé les termes de ces méthodes, il est clairement indiqué qu'ils l'ont fait. MapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRouteIls sont appliqués dans l'ordre dans lequel ils sont ajoutés comme dans le routage traditionnel . Mettez le premier itinéraire plus spécifique (comme l'itinéraire d'une certaine zone).
Dans l'exemple suivant:
MapControllersAjout de la prise en charge du contrôleur pour le routage d'attributs.
MapAreaControllerRouteAjoutez le routage traditionnel du contrôleur à la zone.
MapControllerRouteAjoutez le routage régulier du contrôleur.
Le mappage Razorse produit maintenant dans la page UseEndpoints.
Ajout MapRazorPagesSi l'application utilise Razorla page. Depuis le point final de l'itinéraire, y compris l'ajout de la prise en charge de nombreux cadres de Razorpage participent maintenant.

Startup.ConfigureCode dans Asp.net Core 3.0 après la mise à jour :

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 vous souhaitez partitionner la route, le contrôleur doit d' Controllerabord ajouter Areaet Routeétiqueter, ou ne peut pas, comme dans le contrôleur Asp.net Core 2.0 et le routage automatique Action. L'exemple de code est le suivant:

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();
  }
 }
}

Ces deux phrases doivent être ajoutées [Area("CMS")]、[Route("CMS/[controller]/[action]")]

Je suppose que tu aimes

Origine blog.csdn.net/WuLex/article/details/112638963
conseillé
Classement