我有一个旧版MVC应用程序。我不想打扰所有动作方法,但想记录用户活动,一系列调用的方法以及传递的输入参数值,以及在此过程中是否有任何例外情况。我可以使用.net反射或任何mvc过滤器进行最小的更改吗?
答案 0 :(得分:2)
您可以使用ActionFilterAttribute(https://docs.microsoft.com/fr-fr/aspnet/mvc/overview/older-versions-1/controllers-and-routing/understanding-action-filters-cs)
如果您使用的是.NET Core:
public class UserActivityFilter : ActionFilterAttribute
{
public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutingDelegate next)
{
await next();
// here get your logger service (example )
var logger = context.HttpConcet.RequestServices.GetService(typeof(ILogger)) as ILogDataOperations;
await logger.LogUserActivity(context.HttpContext.User.Name, context.HttpContext.Request.Path);
}
}
然后戴上您的控制器:
[Authorize]
[UserActivityFilter]
public class BaseController : Controller
{
...
}