c# - 是否可以从 .NET Core 中间件检索 Controller 的操作结果?

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

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;
    }
}

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

最佳答案

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

关于c# - 是否可以从 .NET Core 中间件检索 Controller 的操作结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62653589/

相关文章:

c# - 将 LINQ XML 与命名空间一起使用

c# - WasapiLoopbackCapture 内部音频识别在没有音频时会出现乱码和文本

css - 是否可以使用浏览器特定的字体?

c# - 如何为 ActiveAuthenticationSchemes 设置默认值?

c# - 在同一项目中将 EF DbContext 与 mysql 和 sql 一起使用

c# - 我的 ViewModel 是否具有 Model 的属性和单独的属性?

html - 模态注册确认提交

c# - ASP.NET 5 EntityFramework.Core 7.0.0-rc1-final 问题 - 编译器希望引用未找到的 7.0.0.0

c# - 如何从 .Net Core 中的单独类库获取经过身份验证的用户

c# - TargetFramework 与 TargetFrameworks(复数)