asp.net Core3.0区域与路由配置的方法

 更新时间:2019-06-25 03:01:22   作者:佚名   我要评论(0)

在ASP.NET Core 3.0中路由配置和2.0不一样了
一、MVC 服务注册
ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices。


三个

在ASP.NET Core 3.0中路由配置和2.0不一样了

一、MVC 服务注册

ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices。

三个新的顶级扩展方法与 MVC 方案上IServiceCollection可用。 模板使用这些新方法,而不是UseMvc。 但是,AddMvc继续像它已在以前的版本。

下面的示例将添加对控制器和与 API 相关的功能,但不是视图或页面的支持。 API 模板使用此代码:

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

下面的示例将添加对控制器、 与 API 相关的功能,和视图,但不是页面的支持。 Web 应用程序 (MVC) 模板使用此代码:

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

下面的示例添加支持 Razor 页面和最小控制器支持。 Web 应用程序模板使用此代码:

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

此外可以组合的新方法。 下面的示例是等效于调用AddMvcASP.NET Core 2.2 中:

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

二、Startup.Configure配置

一般不建议:

添加UseRouting。

如果该应用程序调用UseStaticFiles,将置于UseStaticFiles之前 UseRouting。

如果应用使用身份验证/授权功能,如AuthorizePage或[Authorize],将对UseAuthentication并UseAuthorization后 UseRouting。

如果应用使用CORS功能,如[EnableCors],将放置UseCors下一步。

替换UseMvc或UseSignalR与UseEndpoints。

以下是一种Startup.Configure典型的 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?}");
 });
}

现在的控制器映射内发生UseEndpoints。

添加MapControllers如果应用使用属性路由。 由于路由包括对许多框架在 ASP.NET Core 3.0 或更高版本的支持,添加属性路由的控制器是参加。

将为以下内容:

MapRoute 使用 MapControllerRoute

MapAreaRoute 使用 MapAreaControllerRoute

由于路由现在包括对不止是 MVC 的支持,已更改了术语进行明确说明他们所做的这些方法。 如传统路由MapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRoute它们要添加的顺序应用。 将第一位更具体的路由 (如某一区域的路由)。

如下示例中:

  • MapControllers 添加了对属性路由的控制器支持。
  • MapAreaControllerRoute 将控制器的传统路由添加区域。
  • MapControllerRoute 添加控制器的常规路由。

现在映射 Razor 页面内发生UseEndpoints。

添加MapRazorPages如果应用使用 Razor 页面。 由于终结点路由包括对许多框架的支持添加 Razor 页面现在参加。

更新后asp.netCore3.0中Startup.Configure代码:

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

如果要进行分区路由,需要在控制器Controller头加Area和Route标签,否则不能像在asp.netCore2.0中自动路由控制器和Action。示例代码如下:

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

这两句一定要加[Area("CMS")]、[Route("CMS/[controller]/[action]")]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

  • ASP.NET Core中使用默认MVC路由的配置
  • ASP.NET Core MVC 配置全局路由前缀
  • [译]ASP.NET Core 2.0 路由引擎详解
  • 详解ASP.NET Core 2.0 路由引擎之网址生成(译)
  • ASP.NET Core中自定义路由约束的实现
  • ASP.NET Core 2.2中的Endpoint路由详解

相关文章

  • asp.net Core3.0区域与路由配置的方法

    asp.net Core3.0区域与路由配置的方法

    在ASP.NET Core 3.0中路由配置和2.0不一样了 一、MVC 服务注册 ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices。 三个
    2019-06-25
  • .NET Core 中的并发编程

    .NET Core 中的并发编程

    并发编程 - 异步 vs. 多线程代码 并行编程是一个广泛的术语,我们应该通过观察异步方法和实际的多线程之间的差异展开探讨。 尽管 .NET Core 使用了任务来表
    2019-06-25
  • ASP.Net Core中使用枚举类而不是枚举的方法

    ASP.Net Core中使用枚举类而不是枚举的方法

    前言: 我相信大家在编写代码时经常会遇到各种状态值,而且为了避免硬编码和代码中出现魔法数,通常我们都会定义一个枚举,来表示各种状态值,直到我看到Java
    2019-06-25
  • win7-vs2012下安装.net frame work 的过程图文详解

    win7-vs2012下安装.net frame work 的过程图文详解

    第一, vs和.net的对应关系大致如下 vs2010----.net framework 4.0 vs2012----.net framework 4.5 vs2015----.net framework 4.6.1 vs2017----.net framework
    2019-06-25
  • .NET Core 3.0 可回收程序集加载上下文的实现

    .NET Core 3.0 可回收程序集加载上下文的实现

    一、前世今生 .NET诞生以来,程序集的动态加载和卸载都是一个Hack的技术,之前的NetFx都是使用AppDomain的方式去加载程序集,然而AppDomain并没有提供直接卸载
    2019-06-25
  • Asp.net core利用MediatR进程内发布/订阅详解

    Asp.net core利用MediatR进程内发布/订阅详解

    1、背景 最近,一个工作了一个月的同事离职了,所做的东西怼了过来。一看代码,惨不忍睹,一个方法六七百行,啥也不说了吧,实在没法儿说。介绍下业务场景吧,
    2019-06-25
  • 新手快速入门微信小程序组件库 iView Weapp

    新手快速入门微信小程序组件库 iView Weapp

    介绍 iView Weapp 提供了与 iView 一致的 UI 和尽可能相同的接口名称,大幅度降低了学习成本,是一套一套高质量的微信小程序 UI 组件库。 使用步骤 1:首
    2019-06-25
  • vscode extension插件开发详解

    vscode extension插件开发详解

    最近公司要使用vscode作为开发工具,需要对vscode做一些定制功能,比如snippet提示,内容提示,以及其他插件集成等,为此做了一些调查,并做了一定的开发与支
    2019-06-25
  • redis缓存穿透解决方法

    redis缓存穿透解决方法

    缓存技术可以用来减轻数据库的压力,提升访问效率。目前在企业项目中对缓存也是越来越重视。但是缓存不是说随随便便加入项目就可以了。将缓存整合到项目中,这
    2019-06-25
  • asp.net core集成JWT的步骤记录

    asp.net core集成JWT的步骤记录

    【什么是JWT】 JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案。 JWT的官网地址:https://jwt.io/ 通俗地来讲,JWT是能代表用户身份的令牌,可以使
    2019-06-25

最新评论