Как получить имена контроллеров и действий в ядре .net с помощью httpcontextaccessor - PullRequest
0 голосов
/ 06 мая 2019

Сейчас я работаю над преобразованием приложения .Net MVC в .Net Core App

Для регистрации событий мы используем "HttpContext" в MVC

LoggerException loggerException = new LoggerException();
loggerException.ApplicationName = "Service";
loggerException.Level = logLevel;
loggerException.Timestamp = DateTime.UtcNow.ToString();
loggerException.UserController = HttpContext.Current.Request.Url.Segments[2];
loggerException.Action = HttpContext.Current.Request.Url.Segments[3];
loggerException.IpAddress = HttpContext.Current.Request.UserHostAddress;

в .Net Core "IHttpContextAccessor" является заменой для "HttpContext". Я не могу получить контроллер пользователя и действие

Мой текущий код .net Core

LoggerException loggerException = new LoggerException();
loggerException.ApplicationName = appName;
loggerException.Level = logLevel;
loggerException.Timestamp = DateTime.UtcNow;
//loggerException.UserController = httpContextAccessor.HttpContext != null ? httpContextAccessor.HttpContext.User.ToString() : string.Empty;
//loggerException.Action = httpContextAccessor.HttpContext != null ? httpContextAccessor.HttpContext. : string.Empty;
loggerException.IpAddress = httpContextAccessor.HttpContext != null ? httpContextAccessor.HttpContext.Connection.RemoteIpAddress.ToString() : string.Empty;

1 Ответ

2 голосов
/ 07 мая 2019

Получите RouteData для текущего запроса в свойстве IActionContextAccessor.ActionContext , затем получите имя контроллера и действия, как показано ниже.

var rd = actionContextAccessor.ActionContext.RouteData;
string currentController = rd.Values["controller"].ToString();
string currentAction = rd.Values["action"].ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...