在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();
}
您认为您应该创建自定义中间件:
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();
}
}