[英].net core 2.2 get action and controller name in logging middleware without ControllerContext
我正在 .net 核心 2.2 中編寫中間件。 我想在中間件中獲取 Action 的名稱和 Controller 的名稱。
我不能使用ControllerContext
因為它當時不可用。
這是核心 3.1 中的解決方案, 在 middleware.Net Core 中讀取 Controller 和動作名稱
public async Task Invoke(HttpContext context)
{
await LogRequest(context);
await LogResponse(context);
}
private async Task LogResponse(HttpContext context)
{
ServiceName = context ...
}
當您使用 .net 核心 2.2 時,您只能獲取路徑並從中獲取 controller 名稱和操作名稱:
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 核心 3.0 之后,您可以使用HttpRequest.RouteValues :
string actionName = context.Request.RouteValues["action"].ToString();
string controllerName = context.Request.RouteValues["controller"].ToString();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.