如何解决.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 举报,一经查实,本站将立刻删除。