微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net core 2.2 在没有 ControllerContext 的日志记录中间件中获取操作和控制器名称

如何解决.net core 2.2 在没有 ControllerContext 的日志记录中间件中获取操作和控制器名称

我正在 .net core 2.2 中编写一个中间件。我想在中间件中获取操作名称和控制器名称
我无法使用 ControllerContext,因为当时它不可用。
这是核心 3.1 Read Controller and Action name in middleware .Net Core

中的解决方
    public async Task Invoke(HttpContext context)
    {
        await LogRequest(context);
        await LogResponse(context);
    }

    private async Task LogResponse(HttpContext context)
    {
          ServiceName = context ...
    }

解决方法

由于您使用的是 .net core 2.2,您只能从中获取路径并获取控制器名称和操作名称:

var RouteData = context.Request.Path.Value.Split("/");
var controllerName=RouteData[1];
var ActionName=RouteData[2];

如果你有区域,你需要使用:

var RouteData = context.Request.Path.Value.Split("/");
    var controllerName=RouteData[2];
    var ActionName=RouteData[3];

.net core 3.0 之后,您可以使用HttpRequest.RouteValues

string actionName = context.Request.RouteValues["action"].ToString();
string controllerName = context.Request.RouteValues["controller"].ToString();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。