Asp.net Core MVC(三)UseMvc设置路由

Asp.net Core MVC(三)UseMvc设置路由,第1张

概述在家办公,下班继续看点东西,不废话,继续看MVC的路由。 asp.net核心mvc的路由是建立在asp.net核心的路由之上的。通过终结点加载路由中间件的配置方式在此不细说了,(DOTNET Core

在家办公,下班继续看点东西,不废话,继续看MVC的路由。

asp.net核心mvc的路由是建立在asp.net核心的路由之上的。通过终结点加载路由中间件的配置方式在此不细说了,(DOTNET Core MVC(二)已经说明)。在看一下其他的加载方式:

app.UseMvc(routes =>{  //使用指定的名称和模板将路由添加到IRouteBuilder。   routes.MapRoute("default",{controller=Home}/{action=Index}/{ID?}");});

这种方式在.net core 3.0(使用终结点加载路由中间件)中使用会提示

 

 

根据提示我们在代码中添加:

ConfigureServices方法中添加:

不启用终结点services.AddMvc(options => options.EnableEndpointRouting = false);
public static IApplicationBuilder UseMvc( this IApplicationBuilder app,Action<IRouteBuilder> configureRoutes{    if (app == null)    {        throw new ArgumentNullException(nameof(app));    }    if (configureRoutes ==  ArgumentNullException(nameof(configureRoutes));    }    在调用UseMvc之前验证AddMvc是否已完成    VerifyMvcIsRegistered(app);    var options = app.applicationservices.GetrequiredService<IOptions<Mvcoptions>>();    if (options.Value.EnableEndpointRouting)    {        var message =            Endpoint Routing does not support 'IApplicationBuilder.UseMvc(...)'. To use " +            'IApplicationBuilder.UseMvc' set 'Mvcoptions.EnableEndpointRouting = false' insIDe 'ConfigureServices(...).;         InvalIDOperationException(message);    }    创建默认mvc处理类     RouteBuilder为RouterMIDdleware中间件创建所需的Router对象    var routes =  RouteBuilder(app)    {        DefaultHandler = app.applicationservices.GetrequiredService<MvcRouteHandler>(),};    配置MVC路由的回调    configureRoutes(routes);    CreateAttributeMegaRoute:返回一个IRouter 主要是用来处理 RouteAttribute 标记的Action,    routes.Routes.Insert(0,AttributeRouting.CreateAttributeMegaRoute(app.applicationservices));    使用制定的路由将路由中间件田间到制applicationbuilder    return app.UseRouter(routes.Build());}
interface IRouteBuilder{    获取applictionbuilder  (将中间件委托添加到应用程序的请求管道)    IApplicationBuilder ApplicationBuilder { get; }    获取路由(核心)    IRouter DefaultHandler { get; set获取IServiceProvIDer用来解析路由服务的集合    IServiceProvIDer ServiceProvIDer { 获取路由集合    IList<IRouter> Routes { ; }    IRouter Build();}
主要是用来处理 RouteAttribute 标记的Action,static IRouter CreateAttributeMegaRoute(IServiceProvIDer services){    if (services ==  ArgumentNullException(nameof(services));    }    return  AttributeRoute(        services.GetrequiredService<IActionDescriptorCollectionProvIDer>        {            var handler = services.GetrequiredService<MvcAttributeRouteHandler>();            handler.Actions = actions;             handler;        });}

先写道在这里,虽然用到了它的方法过一遍,但还是对整个路由的流转方式不是太清楚,所以我们下一篇将详细说明以下路由的管道流转过程。

 原创,转载注明出处。 

 

 

  总结

以上是内存溢出为你收集整理的Asp.net Core MVC(三)UseMvc设置路由全部内容,希望文章能够帮你解决Asp.net Core MVC(三)UseMvc设置路由所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1214552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存