Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.net核心Web API中使用ApplicationBuilder映射注入自定义中间件时,未调用默认控制器_C#_Asp.net Core Webapi - Fatal编程技术网

C# 在.net核心Web API中使用ApplicationBuilder映射注入自定义中间件时,未调用默认控制器

C# 在.net核心Web API中使用ApplicationBuilder映射注入自定义中间件时,未调用默认控制器,c#,asp.net-core-webapi,C#,Asp.net Core Webapi,我尝试为特定路径添加特定中间件,如下所示。中间件正在被调用,但控制器没有被调用,API返回404 not found app.Map("/api/tokenize", subApp => { subApp.UseRequestTokenizationMiddleware(); }); 所需的代码/配置更改,以便控制器也可以与自定义中间件一起调用 关键在于,在.NETCore中,您可以指定请求所采用的“路径”。在启动的配置方法中添加

我尝试为特定路径添加特定中间件,如下所示。中间件正在被调用,但控制器没有被调用,API返回404 not found

 app.Map("/api/tokenize", subApp =>
        {
            subApp.UseRequestTokenizationMiddleware();
        });

所需的代码/配置更改,以便控制器也可以与自定义中间件一起调用

关键在于,在.NETCore中,您可以指定请求所采用的“路径”。在启动的配置方法中添加一行

app.UseRequestTokenizationMiddleware();
并确保它只处理相关的请求。然后,链中的下一个处理程序将获得请求。配置中的最后一件事通常是

app.UseMvcWithDefaultRoute();

这是一个良好的开端

存在不同的路径相关中间件组,在每个中间件中添加每个可能的路径条件不是最佳做法。当然不是。理论上,每个处理程序都会依次查看请求并说“不关我的事……下一步”,除非它采取行动(auth/identity/etc)。它不关心其他处理程序存在什么,也不关心它们做什么。“关注点分离”