向 C# ASP.NET Core 管道添加中间件时,“Map”扩展有什么用?

向 c# asp.net core 管道添加中间件时,“map”扩展有什么用?

中间件是组装到应用程序管道中的软件组件处理请求和响应。

每个组件选择是否将请求传递给下一个组件pipeline,并且可以在下一个组件之前和之后执行某些操作在管道中调用。

Map 扩展用作管道分支的约定。

Map 扩展方法用于根据请求的委托来匹配请求委托。path. Map简单地接受一个路径和一个配置单独中间件的函数pipeline。

在下面的示例中,任何具有 /maptest 基本路径的请求都将被处理通过HandleMapTest方法中配置的管道。

示例

private static void HandleMapTest(IApplicationBuilder app){   app.Run(async context =>{      await context.Response.WriteAsync("Map Test Successful");   });}public void ConfigureMapping(IApplicationBuilder app){   app.Map("/maptest", HandleMapTest);}

除了基于路径的映射之外,MapWhen方法还支持基于谓词的映射。

中间件分支,允许在非常灵活的情况下构建单独的管道fashion.

任何类型为Func的谓词都可以用于将请求映射到新的管道分支。

private static void HandleBranch(IApplicationBuilder app){   app.Run(async context =>{      await context.Response.WriteAsync("Branch used.");   });}public void ConfigureMapWhen(IApplicationBuilder app){   app.MapWhen(context => {      return context.Request.Query.ContainsKey("branch");   }, HandleBranch);      app.Run(async context =>{         await context.Response.WriteAsync("Hello from " + _environment);   });}

地图也可以嵌套

app.Map("/level1", level1App => {   level1App.Map("/level2a", level2AApp => {      // "/level1/level2a"      //...   });   level1App.Map("/level2b", level2BApp => {      // "/level1/level2b"      //...   });});

以上就是向 C# ASP.NET Core 管道添加中间件时,“Map”扩展有什么用?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435397.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 11:05:22
下一篇 2025年12月17日 11:05:40

相关推荐

  • C# 中的 break 和 continue 语句有什么区别?

    break 语句终止循环,并将执行转移到紧随循环后面的语句。 Continue 语句使循环跳过其主体的其余部分,并在重复之前立即重新测试其条件。 当循环内遇到break语句时,循环立即终止,程序控制在循环后的下一个语句处恢复。 C#中的continue语句的工作方式有点像break陈述。然而, co…

    好文分享 2025年12月17日
    000
  • C#程序检查二进制数中是否有K个连续的1

    要检查二进制数中是否有连续的 1,需要检查 0 和 1。 首先,为 0 和 1 设置一个 bool 数组即假与真 – bool []myArr = {false, true, false, false, false, true, true, true}; 对于 0,将计数设置为 0 &#…

    2025年12月17日
    000
  • C# 程序计算数字中的总位数

    让我们假设我们拥有的数字是12。我们通过分配一个十进制字面量来声明和初始化了一个uint变量。 uint val = 12; 12的二进制表示为 − 1100 上面的位数是4,因此要找到总位数,使用Math.log()方法 − uint res = (uint)Math.Log(val , 2.0)…

    2025年12月17日
    000
  • 如何在 C# 中创建 6 元组?

    Tuple 类表示一个 6 元组。元组是一种具有元素序列的数据结构。 它有六个属性 – Item1 − 获取当前 Tuple 对象的第一个组件的值。 Item2 − 获取当前 Tuple 对象的第二个组件的值。 Item3 − 获取当前 Tuple 对象的第三个组件。 Item4 − 获…

    2025年12月17日
    000
  • C#中对列表进行排序的方法是什么?

    在 C# 中对列表进行排序,使用 Sort() 方法。 让我们首先创建一个列表 – List myList = new List(); 现在添加元素 – myList.Add(“Audi”);myList.Add(“BMW”);myList.Add(“Chevrolet”);…

    2025年12月17日
    000
  • 如何在 C# 中获取当前用户的桌面路径?

    可以使用Environment.SpecialFolder获取当前用户的桌面路径。 Environment.SpecialFolder 获取路径系统特殊文件夹由指定的枚举标识。 string desktopPath = Environment.GetFolderPath(Environment.Sp…

    2025年12月17日
    000
  • 如何使用 C# 创建目录?

    要在 C# 中创建、移动和删除目录,System.IO.Directory 类具有方法。 首先,导入 System.IO 命名空间。 现在,使用Director.CreateDirectory() 方法在指定路径中创建目录 – string myDir = @”D:NEW”;if (!D…

    2025年12月17日
    000
  • 如何使用 C# 列出目录中的所有可用文件?

    首先,使用 DirectoryInfo 对象 – //creating a DirectoryInfo objectDirectoryInfo mydir = new DirectoryInfo(@”d:amit”); 现在,使用 GetFiles() 方法获取所有文件 – …

    2025年12月17日
    000
  • 如何在C# 8.0中使用索引器?

    ^运算符 − 它被称为从末尾开始的索引运算符。 它返回相对于序列或集合末尾的索引。 与之前的方法相比,它是找到末尾元素最简洁和最简单的方式。 methods. company.listEmployees[^2].Name = “使用新语法更改的员工2姓名”; company.…

    2025年12月17日
    000
  • C# 程序将句子中的第一个字符转换为大写

    假设以下是您的字符串 – String str = “Welcome to our website!”; 使用 ToCharArray() 方法创建上面包含的字符串的 char 数组: char []ch = str.ToCharArray(); 将第一个字符转换为大写 – …

    2025年12月17日
    000
  • 如何捕获C#中的文件未找到异常?

    当您尝试查找不存在的文件时,会引发找不到文件异常。 假设我在 StreamReader 中设置了一个不存在的文件“new.txt”。如果您尝试使用 StreamReader 访问它(读取它),它将抛出 FileNotFoundException – using (StreamReader…

    2025年12月17日
    000
  • C# 中的 System.Reflection.Module 是什么?

    System.Reflection 命名空间包含的类允许您获取有关应用程序的信息,并向应用程序动态添加类型、值和对象。 它有一个模块构造函数,用于初始化Module 类的新实例。模块是一种可移植的可执行文件,具有一个或多个类和接口。 让我们看一下 C# 中的 System.Reflection 示例…

    2025年12月17日
    000
  • C# 中的对象类

    Object类是C#中所有类的基类。它在 C# 上有以下方法。 Sr.No 方法及说明1Equals(Object) 判断指定对象是否等于当前对象。 2Equals(Object,Object, 确定指定的对象实例是否被视为相等。 3Finalize() 允许对象尝试免费资源 4GetHashCod…

    2025年12月17日
    000
  • C# 中的上下文关键字是什么?

    在C#中,一些标识符在代码上下文中具有特殊含义,例如get和set被称为上下文关键字。 以下是显示上下文关键字的表格: 上下文关键字 addaliasascendingdescendingdynamicfromgetglobalgroupintojoinletorderbypartial (type…

    2025年12月17日
    000
  • Asp.Net webAPI C# 中的内置消息处理程序是什么?

    消息处理程序是一个接收 HTTP 请求并返回 HTTP 的类回复。消息处理程序派生自抽象 HttpMessageHandler 类。消息处理程序为我们提供了处理、编辑或拒绝传入消息的机会在请求到达 HttpControllerDispatcher 之前。 消息处理程序在请求处理管道中更早执行,因此它…

    2025年12月17日
    000
  • C# 中基于线程的并行性

    在 C# 中,任务并行划分任务。然后将任务分配给单独的线程进行处理。在 .NET 中,您可以使用以下机制来并行运行代码:线程、线程池和任务。为了实现并行性,请使用 C# 中的任务而不是线程。 任务不会创建自己的操作系统线程,而是由 TaskScheduler 执行。 让我们看看如何创建任务。使用委托…

    2025年12月17日
    000
  • 什么是 Asp.Net webAPI C# 中的内容协商?

    内容协商是为给定的内容选择最佳表示的过程当有多个表示可用时的响应。意味着,取决于接受请求中的标头值,服务器发送响应。首要的HTTP 中内容协商的机制是这些请求标头 – accept – 响应可以接受哪些媒体类型,例如“application/json”、“applicatio…

    2025年12月17日 好文分享
    000
  • 两个问号在一起 (??) 在 C# 中意味着什么?

    这是null-coalescing 运算符。如果左操作数不为null,则null-coalescing运算符??返回其左操作数的值;否则,它会计算右操作数并返回其结果。如果左操作数评估为非null,则??运算符不会评估其右操作数。 可空类型可以表示未定义或来自类型域的值。当左操作数具有可空类型时,我…

    2025年12月17日
    000
  • C#相当于Java的Thread.setDaemon?

    C#相当于Java的Thread.setDaemon就是前台和后台线程的概念。 当前台线程关闭时,后台线程也将终止。前台线程继续运行,直到最后一个前台线程终止。 用于后台线程的属性是 IsBackground,它获取或设置一个值,指示线程是否为后台线程。该属性的默认值为 false,因为创建的默认线…

    2025年12月17日
    000
  • C# 程序使用使用 LINQ 的列表收集的 where() 方法查找姓名以“S”开头的学生列表

    简介 本文要学习的主题是使用List集合的where()方法和LINQ编写一个C#程序,以查找名字以’S’开头的学生名单。 语言集成查询又名 LINQ 用于生成 C# 语言查询。以前我们必须使用其他关系语言,例如 SQL 和 XML。它为 C# 语言或任何其他 .NET 语言…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信