首页 > 编程语言 >asp.net core的中间件

asp.net core的中间件

时间:2023-07-17 14:24:53浏览次数:57  
标签:core Run 请求 中间件 next net

中间件是asp.net core的核心,甚至可以说asp.net core web api应用就是一个中间件管道,接口请求和响应一来一回。中间件,就是装配到这个管道中用来处理请求响应的组件。

关于中间件的使用,有三个核心方法:

核心方法

Use

app.Use(async (context, next) =>
{
    //代码
    await next.Invoke();
    //代码
});

Use方法连接管道中的中间件。context参数表示当前请求的上下文信息,next表示管道中的下一个委托。next委托前的代码在请求进来时执行,next委托后的代码在响应出去时执行。

Run

Run委托没有next参数,第一个Run委托作为终端,终止管道,之后的委托都不生效。Run与不调用next参数的Use效果上相同。

app.Run(async context =>
{
    await context.Response.WriteAsync("Hello world");
});

Map

Map用于创建管道分支。基于请求路径的匹配进入不同分支的执行。

app.Map("/path", app =>
{
    //中间件
});

常用内置中间件

asp.net core 为常见应用场景提供了内置中间件,以下摘自msdn

  1. 异常/错误处理
    • 当应用在开发环境中运行时:
    • 当应用在生产环境中运行时:
      • 异常处理程序中间件 (UseExceptionHandler) 捕获以下中间件中引发的异常。
      • HTTP 严格传输安全协议 (HSTS) 中间件 (UseHsts) 添加 Strict-Transport-Security 标头。
  2. HTTPS 重定向中间件 (UseHttpsRedirection) 将 HTTP 请求重定向到 HTTPS。
  3. 静态文件中间件 (UseStaticFiles) 返回静态文件,并简化进一步请求处理。
  4. Cookie 策略中间件 (UseCookiePolicy) 使应用符合欧盟一般数据保护条例 (GDPR) 规定。
  5. 用于路由请求的路由中间件 (UseRouting)。
  6. 身份验证中间件 (UseAuthentication) 尝试对用户进行身份验证,然后才会允许用户访问安全资源。
  7. 用于授权用户访问安全资源的授权中间件 (UseAuthorization)。
  8. 会话中间件 (UseSession) 建立和维护会话状态。 如果应用使用会话状态,请在 Cookie 策略中间件之后和 MVC 中间件之前调用会话中间件。
  9. 用于将 Razor Pages 终结点添加到请求管道的终结点路由中间件(带有 MapRazorPagesUseEndpoints)。

标签:core,Run,请求,中间件,next,net
From: https://www.cnblogs.com/ganch/p/17559955.html

相关文章

  • net core-代码优化
    一.看一下原始代码: 1.将所有检查放到一个方法 2.添加自定义异常信息。 3,添加常量 5.使用状态码返回结果: 5.使用结果对象模式   对最终结果解析:  ------------------------------------------------------------------------这是分割线------------......
  • Asp-Net-Core学习笔记:单元测试和集成测试
    前言我在使用AspNetCore的这段时间内,看了很多开源项目和博客,发现各种.Net体系的新技术很多人都有关注和使用,但却很少有人关注测试。测试是软件生命周期中的一个非常重要的阶段,对于保证软件的可靠性具有极其重要的意义。在应用程序的开发过程中,为了确保它的功能与预期一致,必......
  • Dubbo接口+python的接口测试举例(用Python自带的telnetlib库进行dubbo测试)
      最近公司开发新的一套系统,开发出来的方案会基于dubbo分布式服务框架开发的,那么什么是dubbo,身为测试的我,第一眼看到这个,我得去了解了解dubbo是啥玩意,为开展的测试工作做准备,提前先学dubbo的相关知识。 1、什么是dubbo   Dubbo来源于阿里巴巴集团某个团队研发出来的一个......
  • c#.net实现浏览器端大文件分片上传
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • net core-socket编程
    基本概念:TCP和UDP的区别具体区别如下:1)TCP是面向连接的传输。UDP是无连接的传输2)TCP有流量控制、拥塞控制,检验数据数据按序到达,而UDP则相反。3)TCP的路由选择只发生在建立连接的时候,而UDP的每个报文都要进行路由选择4)TCP是可靠性传输,他的可靠性是由超时重发机制实......
  • 【.Net Core】生成项目处理器架构MSIL与目标项目架构 "AMD64" 不一致
    修复方法在当前项目的项目文件中<PropertyGroup>标签中添加架构(按照需要,可以只需要保留一个):<PropertyGroup><Platforms>AnyCpu;x64</Platforms></PropertyGroup>在编译配置中,修改当前项目(或者目标项目)的编译架构:注意,Debug和Release都需要修改......
  • ASP.NET Core SignalR 系列(四)- 中心筛选器
    本章将和大家分享ASP.NETCoreSignalR中的中心筛选器。本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hub-filters?view=aspnetcore-7.0废话不多说,下面我们直接进入本章主题。中心筛选器:在ASP.NETCore5.0或更高版本中可用。允许......
  • .net下的FastReport版本
    FastReport的几个版本之前使用FastReportVCL版,对于.net平台下的FastReport一直未做过深入了解..Net平台下的几个版本对比https://fastreports.github.io/FastReport.Documentation/COMPARISON.html简单总结:商业FastReport.Net版本,.netframework框架下的商业版本,......
  • 1.netty的简介
    1.netty的介绍2.netty的使用场景......
  • 如何在.NET Core中使用redis
    一、1.添加Redis依赖项:在.NETCore项目中,你需要添加对StackExchange.Redis库的引用。你可以通过NuGet包管理器或手动添加依赖项来完成此操作。2. 配置Redis连接:在appsettings.json文件中,添加Redis连接配置。例如:"Redis":{"ConnectionString":"localhost:6379"}3.......