(精华)2020年9月17日 ASP.NET Core 中间件详解
发布日期:2021-06-29 15:12:32
浏览次数:3
分类:技术文章
本文共 8514 字,大约阅读时间需要 28 分钟。
1.基本中间件的使用
public static void Start(){ var host = Host.CreateDefaultBuilder() .ConfigureWebHost(builder => builder .UseKestrel() .Configure(app => app.Run(context => context.Response.WriteAsync("Hello!")) ) ).Build(); host.Run();}
public static class Sample02{ public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .Configure(app => app .Use(Middleware1) .Use(Middleware2) ) ).Build(); host.Run(); } private static RequestDelegate Middleware1(RequestDelegate next) { async Task App(HttpContext context) { await context.Response.WriteAsync("Middleware 1 Begin."); await next(context); await context.Response.WriteAsync("Middleware 1 End."); } return App; } private static RequestDelegate Middleware2(RequestDelegate next) { async Task App(HttpContext context) { await context.Response.WriteAsync("Middleware 2 Begin."); } return App; }}
2.强类型中间件的使用
public class Sample03{ public class HelloMiddleware : IMiddleware { public async Task InvokeAsync(HttpContext context, RequestDelegate next) { await context.Response.WriteAsync("Hello"); } } public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .ConfigureServices(collection => collection.AddSingleton()) .Configure(app => app .UseMiddleware () ) ).Build(); host.Run(); }}
3.约定中间件的使用
public class Sample04{ public class HelloMiddleware { private readonly RequestDelegate _next; private readonly string _content; private readonly bool _isToNext; public HelloMiddleware(RequestDelegate next, string content, bool isToNext = false) { _next = next; _content = content; _isToNext = isToNext; } public async Task InvokeAsync(HttpContext httpContext) { await httpContext.Response.WriteAsync($"Hello {_content}!\r\n"); if (_isToNext) await _next(httpContext); } } public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .Configure(app => app .UseMiddleware("Rick", true) .UseMiddleware ("Motry") ) ).Build(); host.Run(); }}
4.Startup的由来和使用
public static class Sample06 { public class Startup { public void ConfigureServices(IServiceCollection services) { foreach (var service in services) { var serviceName = service.ServiceType.Name; var implType = service.ImplementationType; if (implType != null) { Console.WriteLine($"{service.Lifetime, -15}{serviceName,-40}{implType.Name}"); } } } public void Configure(IApplicationBuilder app) { } } public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .UseStartup()) .Build(); host.Run(); } }
public class Sample07 { public class Startup { public Startup(IConfiguration configuration, IHostEnvironment hostingEnvironment) { Debug.Assert(configuration != null); Debug.Assert(hostingEnvironment != null); } public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { } } public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .UseStartup()) .Build(); host.Run(); } }
public class Sample09 { public class Test1{ }; public class Test2{ }; public class TestMiddleware { private readonly RequestDelegate _next; public TestMiddleware(RequestDelegate next, Test1 test1, Test2 test2) { Debug.Assert(test1 != null); Debug.Assert(test2 != null); _next = next; } public async Task InvokeAsync(HttpContext httpContext) { Debug.Assert(_next != null); await httpContext.Response.WriteAsync("Test"); } } public class Startup { public void ConfigureServices(IServiceCollection services) { services .AddSingleton() .AddSingleton (); } public void Configure(IApplicationBuilder app) { app.UseMiddleware (); } } public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .UseStartup ()) .Build(); host.Run(); } }
public class Sample10 { public class Test1{ }; public class Test2{ }; public class TestMiddleware { private readonly RequestDelegate _next; public TestMiddleware(RequestDelegate next) { _next = next; } public async Task InvokeAsync(HttpContext httpContext,Test1 test1, Test2 test2) { Debug.Assert(test1 != null); Debug.Assert(test2 != null); await httpContext.Response.WriteAsync("Test"); } } public class Startup { public void ConfigureServices(IServiceCollection services) { services .AddSingleton() .AddSingleton (); } public void Configure(IApplicationBuilder app) { app.UseMiddleware (); } } public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .UseStartup ()) .Build(); host.Run(); } }
public class Sample11 { public class Test1{ } public class Test2{ } public static void Start() { var host = Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(builder => builder .ConfigureServices(collection => collection .AddSingleton() .AddSingleton () .AddControllersWithViews()) .Configure(app=>app .UseRouting() .UseEndpoints(routeBuilder => routeBuilder.MapControllers())) ) .Build(); host.Run(); } } public class Startup { public void Configure(IApplicationBuilder app) { } public void ConfigureServices(IServiceCollection services) { } } public class HomeController : Controller { private readonly Sample11.Test1 _test1; public HomeController(Sample11.Test1 test1) { _test1 = test1; } [HttpGet("/")] public IActionResult Index() { ViewBag.Test1 = _test1; return View(); } }
转载地址:https://codeboy.blog.csdn.net/article/details/108524678 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月20日 12时29分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SpringBoot @Scheduled 执行两次的问题
2019-04-29
tomcat配置JVM
2019-04-29
Ubuntu软件安装&卸载
2019-04-29
面试笔试易错知识点Java篇八
2019-04-29
弹性事务框架ETF4J——面向Java微服务的交易最终一致性解决方案
2019-04-29
【Scala 教程】Scala 条件与循环语句
2019-04-29
【Scala 教程】Scala 集合类型
2019-04-29
JAVA 线程同步机制 synchronized
2019-04-29
MySQL 安装教程(无脑版)
2019-04-29
IDEA 怎么删除一个Module
2019-04-29
走进数据科学:最好是通过比网课更好的方法
2019-04-29
AI革命第一步:最容易被忽略但必不可少的物联网
2019-04-29
2020年开发运维工具清单:选择开发运维工具堆栈吧
2019-04-29
效率提升法则:高效人士不会去做的4件事
2019-04-29
8.PostgreSQL约束
2019-04-29
【技术分享】使用AES加密技术保障数据安全
2019-04-29
【应用实例】布线多?成本高?不可靠?泽耀方案没烦恼!
2019-04-29
数据可视化工具:Matplotlib绘图
2019-04-29
用Python写个超级小恐龙跑酷游戏,上班摸鱼我能玩一天
2019-04-29