【问题标题】:Is it possible to retrieve controller's action result from .NET Core middleware?是否可以从 .NET Core 中间件中检索控制器的操作结果?
【发布时间】:2020-06-30 08:45:52
【问题描述】:
public class UsersController : APIControllerBase
{
    public UsersController() { }

    public Client Get()
    {
       return new Client()
        {
            ClientID = 1,
            // LastUpdate =  I want to update this field in middleware
        };
    }

    public Client Get(int id)
    {
       return new Client()
        {
            ClientID = id
            // LastUpdate =  I want to update this field in middleware
        };
    }
}

public class SetClientLastUpdateMiddleware
{
    private readonly RequestDelegate next;

    public SetClientLastUpdateMiddleware(RequestDelegate next)
    {
        this.next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        await next(context);

        // Can I do something like below?
        if(context.ActionResult is Client) ((Client)context.ActionResult).LastUpdate = Date.Now;
    }
}

请考虑以上代码。我想为每个端点应用一个处理程序。我不知道中间件是否是一个合适的选择。我需要的是获取端点的操作结果作为其原始类型并对其进行一些更新。如果中间件不是正确的方法,任何建议都将不胜感激。

【问题讨论】:

标签: c# asp.net-core .net-core asp.net-core-webapi middleware


【解决方案1】:

是的。但是你不能在你的控制器中创建一个新的客户端。尝试在 Client 中创建一个公共变量,您可以在中间件中为其赋值。在您的控制器中,您可以获取此值并添加到此对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2023-03-03
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多