获取中间件数据并在类或控制器中使用-ASP.NET Core 3.1

问题描述

我有一些中间件,该中间件当前会记录从文档中获取的用于调试目的的上下文中的请求信息:

public class RequestLoggerMiddleware
{
    private readonly RequestDelegate _next;

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

    public async Task InvokeAsync(HttpContext context,ILoggerFactory loggerFactory,IConfiguration configuration)
    {
        var _logger = loggerFactory.CreateLogger("init");
        
        var pathbase = configuration["PATH_BASE"];
        
        // Request method,scheme,and path
        _logger.LogDebug("Request Method: {METHOD}",context.Request.Method);
        _logger.LogDebug("Request Scheme: {SCHEME}",context.Request.Scheme);
        _logger.LogDebug("Request Path: {PATH}",context.Request.Path);
        _logger.LogDebug("Context Base Path: {PATHBASE}",context.Request.PathBase);
        _logger.LogDebug("Env Base Path: {PATH_BASE}",pathbase); 
        _logger.LogDebug("Host: {HOST}",context.Request.Host.Value);
        
        // Connection: RemoteIp
        _logger.LogDebug("Request RemoteIp: {REMOTE_IP_ADDRESS}",context.Connection.RemoteIpAddress);

        await _next(context);
    }
}

我想使用诸如RemoteIpAddress之类的内容,并向其中添加更多上下文信息(如机器ID),然后将数据传递给另一个类或控制器以进行处理。

我不确定是否可以将传递给HttpContext方法InvokeAsync传递或注入到常规类或控制器中并产生相同的信息,因此我为什么要问这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)