zoukankan      html  css  js  c++  java
  • .net core web 中使用app.UseRouter的几种使用方式

      public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                loggerFactory.AddConsole();
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                app.UseHangfireServer();
                app.UseHangfireDashboard();
    
                //方式一
                //app.Run(async (context) =>
                //{
                //    await context.Response.WriteAsync("Hello World!");
                //});
    
                //方式二
                //var endpoint = new RouteHandler((c) => c.Response.WriteAsync("Hello, I am Routing!"));
                //app.UseRouter(endpoint);
    
                //方式三
                var endpoint = new RouteHandler((c) =>c.Response.WriteAsync($"Hello, I am Routing! your item is {c.GetRouteValue("item")}"));
                var resolver = app.ApplicationServices.GetRequiredService<IInlineConstraintResolver>();
                var runRoute = new Route(endpoint, "{item=home}", resolver);
                app.UseRouter(runRoute);
    
                //方式四
                var runRoute1 = new Route(endpoint, "{item=home}", resolver);
                var otherRoute = new Route(endpoint, "other/{item=other_home}", resolver);
                var routeCollection = new RouteCollection();
                routeCollection.Add(runRoute1);
                routeCollection.Add(otherRoute);
                app.UseRouter(routeCollection);
    
                //方式五
                var routeBuilder = new RouteBuilder(app)
                {
                    DefaultHandler = endpoint,
                };
                routeBuilder.MapRoute("default", "{item=home}");
                routeBuilder.MapRoute("other", "other/{item=other_home}");
    
                app.UseRouter(routeBuilder.Build());
    
                //方式六,改写handler
                var myendpoint = new MyRouteHandler();
                var myrouteBuilder = new RouteBuilder(app)
                {
                    DefaultHandler = myendpoint,
                };
                myrouteBuilder.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
                app.UseRouter(myrouteBuilder.Build());
    
            }

    自定义hanlder

     public class MyRouteHandler : IRouter
        {
            public VirtualPathData GetVirtualPath(VirtualPathContext context)
            {
                return null;
            }
    
            public Task RouteAsync(RouteContext context)
            {
    
                context.Handler = (c) =>
                {
                    var printStr = $"controller:{c.GetRouteValue("controller")}," +
                    $"action:{c.GetRouteValue("action")},id:{c.GetRouteValue("id")}";
                    return c.Response.WriteAsync(printStr);
                };
                return Microsoft.AspNetCore.Routing.Internal.TaskCache.CompletedTask;
            }
        }
  • 相关阅读:
    【web前端】面题整理(2)
    【web前端】前段时间的面题整理(1)
    【js】什么是函数节流与函数去抖
    【感想文】对于情绪管理,我的感悟。
    【感想文】现代人的恋爱,已经不再是过去的一生只爱一个人了
    【插件】哔哩哔哩专栏区-文章朗读插件安装
    【js】版本号对比处理方案
    【js】了解前端缓存,收获不止于此!
    【js】关于this指针-理解call、apply、bind
    【读后感】爱的五种能力
  • 原文地址:https://www.cnblogs.com/airven/p/5948774.html
Copyright © 2011-2022 走看看