C#:ActionFilter获取API请求对象

问题描述 投票:0回答:1

在ActionFilter属性中的C#API中,对所有请求对象运行函数的最有效方法是什么?

我们应该利用actionExecutingContext .ActionArguments,并尝试遍历字典列表吗?应将实际请求对象发送到我们的静态数据方法之一,该方法接受输入,并将所有类成员号乘以2,等等。

public async Task OnActionExecutionAsync(ActionExecutingContext actionExecutingContext , ActionExecutionDelegate next)
{
    foreach (var actionExecutingContextItem in actionExecutingContext.ActionArguments)
    {
        DataConvert.MultiplyByTwo(actionExecutingContextItem .Value);
    }
    var actionExecutedContext = await next();
}

enter image description here

c# .net asp.net-core .net-core action-filter
1个回答
0
投票

您认为您应该创建自定义中间件:

public class CustomMiddleware
{
    private readonly RequestDelegate _next;

    public CustomMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    // IMyScopedService is injected into Invoke
    public async Task Invoke(HttpContext httpContext)
    {
        //TODO: your code goes here
        await _next(httpContext);
    }
}

用于在启动时注入中间件的扩展使用Microsoft.AspNetCore.Builder;

namespace Culture
{
    public static class MysCustomMiddlewareExtensions
    {
        public static IApplicationBuilder UseCustomMiddleware(
            this IApplicationBuilder builder)
        {
            return builder.UseMiddleware<CustomMiddleware>();
        }
    }
}

将其添加到您的Startup.cs中

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        app.UseCustomMiddleware();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.