簡體   English   中英

.net core 2.2 get action and controller name in logging middleware without ControllerContext

[英].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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM