关于asp.netCore3.0区域和路由配置

在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]")]

原文地址:https://www.cnblogs.com/cqinwn/p/10931973.html

时间: 2024-10-09 04:03:22

关于asp.netCore3.0区域和路由配置的相关文章

asp.netCore3.0 中使用app.UseMvc() 配置路由

一.新配置路由策略  在 Asp.Net Core 3.0中默认不再支持app.UserMvc() 方式配置路由 系统. 而是使用新的模式,点击查看asp.netCore3.0区域和路由配置变化 默认使用的话 会抛出异常: InvalidOperationException: Endpoint Routing does not support 'IApplicationBuilder.UseMvc(...)'. To use 'IApplicationBuilder.UseMvc' set 'M

asp.netcore3.0 netstandard2.1 使用 DbProviderFactories 连接数据库

在.netstandard2.0时 System.Data.Common 这个包里并没有加入DbProviderFactories DbProviderFactories类在.netframework中是非常重要的存在,依靠他可以适配各种数据库客户端(sqlserver.mysql.sqllite等)创建数据库连接. 现在 随着.netcore3.0的正式发布,已经实现了.netstandard2.1,并且在此版本中实现了 DbProviderFactories 现在可以像.netframewo

第2章 ASP.NET MVC(URL、路由及区域)

ASPNET MVC ASP.NET MVC简介 一.      简介 二.      MVC概念 三.      Asp.NET MVC 原理 四.      与ASP.NETWeb From比较 五.      安装必要软件 六.      第一个MVC应用程序 控制器向视图传递数据的方法 1.         ViewData[Key]=value 只能在当前视图中使用 2.         ViewBag.名称=value  只能在当前视图使用 3.         TempData[k

史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~

继续延续坑爹标题系列.其实只是把apress.pro.asp.net.mvc.4.framework里的CHAPTER 13翻译过来罢了,当做自己总结吧.内容看看就好,排版就不要吐槽了,反正我知道你也不会反对的. XD 首先说URL的构造. 其实这个也谈不上构造,只是语法特性吧. 命名参数规范+匿名对象 routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new

Asp.Net Core下的两种路由配置方式

与Asp.Net Mvc创建区域的时候会自动为你创建区域路由方式不同的是,Asp.Net Core下需要自己手动做一些配置,但更灵活了. 我们先创建一个区域,如下图 然后我们启动访问/Manage/Home/Index 发现是404没有找到该页面,因为我们还没有为其配置路由,下面使用两种配置区域路由的方式 1.通过配置MapRoute app.UseMvc(routes => { routes.MapRoute( name: "default", template: "

Swift3.0服务端开发(二) 静态文件添加、路由配置以及表单提交

今天博客中就来聊一下Perfect框架的静态文件的添加与访问,路由的配置以及表单的提交.虽然官网上有聊静态文件的访问的部分,但是在使用Perfect框架来访问静态文件时还是有些点需要注意的,这些关键点在其官方文档上并未提出.今天我们要做的事情就是通过浏览器访问静态文件,然后在静态文件中使用form表单往指定的路由上进行提交相应的数据. 一.静态文件的添加与访问 1.未使用Xcode管理的Perfect的静态文件根目录的配置 在PHP开发或者Java Web开发中,都有一个根目录来存储相应的静态文

asp.net mvc 伪静态路由配置

asp.net mvc实现伪静态路由必须按如下方式设置好,才能访问 .htm 或者.html页面 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll 来自为知笔记(Wiz)

Asp.Net4.0/VS2010新变化(3):webform中也可以直接url路由

以前在做asp的时候,要把 /default.asp?id=123映射成/default/123,需要借助IISRewriter这个组件,到了asp.net以后,可以用代码写了,但是个人觉得很麻烦,要写一堆代码,还要修改web.config,现在好了:asp.net4.0中 asp.net mvc中的路由规则全部可以用于webform了 使用步骤: 1.Global.ascx.cs中先注册路由规则 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Packet Tracer 5.0实验(七) 路由器单臂路由配置

Packet Tracer 5.0实验(七) 路由器单臂路由配置 一.实验目标 掌握单臂路由配置方法: 通过单臂路由实现不同VLAN间互相通信: 二.实验背景 某企业有两个主要部门:技术部和销售部,分处于不同的办公室,为了安全和便于管理,对两个 部门的主机进行了VLAN的划分,技术部和销售部分处于不同的VLAN.现由于业务的需求,需要销售部和技术部的主机能够相互访问,获得相应的资源,两个 部门的交换机通过一台路由器进行了连接. 三.技术原理 单臂路由:是为实现VLAN间通信的三层网络设备路由器,