Asp.net Core MVC(三)UseMvc设置路由
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Asp.net Core MVC(三)UseMvc设置路由,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2514字,纯文字阅读大概需要4分钟。
内容图文
![Asp.net Core MVC(三)UseMvc设置路由](/upload/InfoBanner/zyjiaocheng/1074/25e3b902be61403ca0e9527f4064c79d.jpg)
在家办公,下班继续看点东西,不废话,继续看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) { thrownew ArgumentNullException(nameof(app)); } if (configureRoutes == null) { thrownew 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(...)."; thrownew InvalidOperationException(message); } //创建默认mvc处理类 //RouteBuilder为RouterMiddleware中间件创建所需的Router对象var routes = new RouteBuilder(app) { DefaultHandler = app.ApplicationServices.GetRequiredService<MvcRouteHandler>(), }; //配置MVC路由的回调 configureRoutes(routes); //CreateAttributeMegaRoute:返回一个IRouter 主要是用来处理 RouteAttribute 标记的Action, routes.Routes.Insert(0, AttributeRouting.CreateAttributeMegaRoute(app.ApplicationServices)); //使用制定的路由将路由中间件田间到制applicationbuilderreturn app.UseRouter(routes.Build()); }
public interface IRouteBuilder { // 获取applictionbuilder (将中间件委托添加到应用程序的请求管道) IApplicationBuilder ApplicationBuilder { get; } //获取路由(核心) IRouter DefaultHandler { get; set; } //获取IServiceProvider用来解析路由服务的集合 IServiceProvider ServiceProvider { get; } //获取路由集合 IList<IRouter> Routes { get; } IRouter Build(); }
// 主要是用来处理 RouteAttribute 标记的Action, public static IRouter CreateAttributeMegaRoute(IServiceProvider services) { if (services == null) { thrownew ArgumentNullException(nameof(services)); } returnnew AttributeRoute( services.GetRequiredService<IActionDescriptorCollectionProvider>(), services, actions => { var handler = services.GetRequiredService<MvcAttributeRouteHandler>(); handler.Actions = actions; return handler; }); }
先写道在这里,虽然用到了它的方法过一遍,但还是对整个路由的流转方式不是太清楚,所以我们下一篇将详细说明以下路由的管道流转过程。
![技术分享图片](/upload/getfiles/default/2022/10/31/20221031054706001.jpg)
原文:https://www.cnblogs.com/xtt321/p/12343934.html
内容总结
以上是互联网集市为您收集整理的Asp.net Core MVC(三)UseMvc设置路由全部内容,希望文章能够帮你解决Asp.net Core MVC(三)UseMvc设置路由所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。