将参数从中间件传递到控制器-ASP.NET Core

时间:2018-07-07 11:16:59

标签: asp.net-core-2.0 asp.net-core-middleware

我需要将一些参数从中间件传递给控制器​​,如果我必须照顾性能,资源使用和安全性,我很困惑应该使用哪种方法。

  • context.Items["user-id"] = "12345";
  • context.Session.SetInt32("user-id", 12345);

(这是保持会话始终启用的要求。)

2 个答案:

答案 0 :(得分:1)

您可以将其作为HTTP标头通过请求传递到管道中

public class UserHeaderMiddleware  
{
    private readonly RequestDelegate _next;

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

    public async Task Invoke(HttpContext context)
    {
        context.Request.Headers.Add("user-id", new[] { userId.ToString() });
        await _next(context);
    }
}

答案 1 :(得分:1)

如果以后需要存储用户ID,则使用会话是一种方法。 Items仅将其传递给该请求。