.net核心从HttpContext检索控制器名称和操作名称

时间:2020-06-17 13:18:12

标签: asp.net-core

试图通过下面的代码获取控制器名称和操作的中间件;

private SystemLog CreateRequestLogEntity(HttpContext context)
        {
            var _logEntity = new SystemLog();
            if (context.Request.Path.HasValue)
            {
                string _uri = context.Request.Path.ToUriComponent();
                string[] arrs = _uri.Split('/');
                if (arrs.Length >= 1)
                    _logEntity.controller = arrs[1];
                if (arrs.Length >= 2)
                    _logEntity.action = arrs[2];
            }

适用于简单的请求,但您会发现它的风险和丑陋程度,

如何正确制作?

2 个答案:

答案 0 :(得分:0)

您是否尝试过

context.GetRouteValue("controller").ToString();

答案 1 :(得分:0)

尝试如下代码:

   private void CreateRequestLogEntity(HttpContext context)
    {
        string controllerName = context.Request.RouteValues["controller"].ToString();
        string actionName = context.Request.RouteValues["action"].ToString();
        // do other things
    }

这是测试结果:

enter image description here