. net ядро ​​получает имя контроллера и имя действия из HttpContext - PullRequest
0 голосов
/ 17 июня 2020

в промежуточном программном обеспечении, пытающемся получить имя контроллера и действие по приведенному ниже коду;

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 голосов
/ 18 июня 2020

Попробуйте ввести следующий код:

   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

0 голосов
/ 17 июня 2020

пробовали ли вы что-нибудь вроде

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

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...