我為每個控制器使用相同的代碼。每次執行操作之前都會呼叫 OnActionExecuting。我如何重構給定的代碼?
public class HomeController : Controller
{
private readonly ILogger<AccountController> logger;
private string userId;
private string path;
public AccountController(
ILogger<AccountController> logger)
{
this.logger = logger;
}
public override void OnActionExecuting(ActionExecutingContext context)
{
userId = User.FindFirstValue(ClaimTypes.NameIdentifier)
path = $"{context.HttpContext.Request.Path.Value}[{context.HttpContext.Request.Method}]";
logger.LogDebug($"{path} started. User(id): {userId}.");
}
}
我如何使用它的示例:
logger.LogInformation($"{path} Was approved for User(id) {userId}.");
uj5u.com熱心網友回復:
首先,創建一個 BaseController :
public class BaseController : Controller
{
private readonly ILogger<BaseController> logger;
private string userId;
private string path;
public BaseController(IServiceProvider serviceProvider)
{
this.logger = serviceProvider.GetRequiredService<ILogger<BaseController>>();
}
public override void OnActionExecuting(ActionExecutingContext context)
{
userId = User.FindFirstValue(ClaimTypes.NameIdentifier)
path = $"{context.HttpContext.Request.Path.Value}[{context.HttpContext.Request.Method}]";
logger.LogDebug($"{path} started. User(id): {userId}.");
}
}
然后,創建 HomeController
public class HomeController : BaseController
{
public HomeController(IServiceProvider serviceProvider) : base(serviceProvider)
{
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/318820.html
標籤:C# 日志记录 asp.net-core-mvc 重构
上一篇:如何在C中找到鍵/值字典的大小
