В моем проекте я регистрирую каждый запрос с помощью промежуточного программного обеспечения. Как я могу получить маршрут, который был найден для запроса в целях регистрации?
У меня есть полный путь в запросе, например / V1 / User / 123
Но я хочу записать это: / v1 / User / {id}
Вот что у меня есть:
public async override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
var path = context.ActionDescriptor.AttributeRouteInfo.Template;
await next();
}
Это в моем базовом контроллере, как мне получить это промежуточное программное обеспечение для регистрации?
Вот как я получил это промежуточное программное обеспечение для регистрации:
BaseController:
public async override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
var actionPath = context.ActionDescriptor.AttributeRouteInfo.Template;
HttpContext.Items.Add("ActionInfo", actionPath);
await next();
}
LoggingMiddleware:
var actionInfo = context.Items["ActionInfo"];
if (actionInfo != null)
{
actionMatched = actionInfo.ToString();
}
Есть ли лучший способ сделать это?
Также это работает, только если вы используете маршрутизацию атрибутов. Как это может работать, если вы регистрируете маршруты при запуске?