C# 用Asp.Net内核调用中间件组件

C# 用Asp.Net内核调用中间件组件,c#,asp.net-core,.net-core,middleware,C#,Asp.net Core,.net Core,Middleware,是否可以只对非来自js的请求执行中间件。因为我有一个中间件,它的执行对我的服务器的js请求没有多大意义。 有没有可能的方法来检查请求是否不是直接的?您不能仅对某些请求执行中间件,但可以检查请求是否满足中间件中的条件,例如请求中是否存在标头 假设您的js客户端调用您的api在每个请求中添加一个自定义头,您可以编写一个中间件来检查该头,如果该头存在,则执行一些代码 app.Use((context, next) => { if (context.Request.Headers.Any(

是否可以只对非来自js的请求执行中间件。因为我有一个中间件,它的执行对我的服务器的js请求没有多大意义。
有没有可能的方法来检查请求是否不是直接的?

您不能仅对某些请求执行中间件,但可以检查请求是否满足中间件中的条件,例如请求中是否存在标头

假设您的js客户端调用您的api在每个请求中添加一个自定义头,您可以编写一个中间件来检查该头,如果该头存在,则执行一些代码

app.Use((context, next) =>
{
    if (context.Request.Headers.Any(h => h.Key == "Custom-Header"))
    {
           DoStuff();
    }

    return next();
})

为了执行特定请求的中间件,您可以尝试

public void配置(IApplicationBuilder应用程序)
{
app.MapWhen(context=>context.Request.Query.ContainsKey(“分支”),
车把);
运行(异步上下文=>
{
wait context.Response.WriteAsync(“来自非映射委托的Hello.”;
});
}

要检查是否处理请求,请实现您自己的逻辑来替换
context.Request.Query.ContainsKey(“分支”)

这两个请求是否相同、来源相同、上下文相同?它们有什么不同吗?您可以在js调用中添加一个客户头,并在自定义中间件中过滤它们
public void Configure(IApplicationBuilder app)
{
    app.MapWhen(context => context.Request.Query.ContainsKey("branch"),
                           HandleBranch);

    app.Run(async context =>
    {
        await context.Response.WriteAsync("Hello from non-Map delegate. <p>");
    });
}