我正在尝试寻找一种更清晰的方法来为一个包含数百个 Controller
和 ApiController
的已有 asp.net MVC 和 Web Api 项目添加审计跟踪功能。
审计跟踪日志应如下所示。基本上,我只想在此函数中记录 何时谁做了什么
。
UserID
ActionTime
Controller
Action
我有什么遗漏的吗?如果有,请纠正我。谢谢。
目前,我发现有些方法可以实现它。
实现一个
ActionFilterAttribute
并在OnActionExecuting
中编写自己的日志函数,然后使用此属性装饰所有操作。为所有已有的控制器实现一个基础
Controller
,例如BaseController
,并在其中编写日志记录于OnActionExecuting
。然后将所有的控制器更改为继承自BaseController
。(如果不正确,请纠正我。谢谢。)对于
ApiController
,实现一个DelegatingHandler
来实现它。
对于 1 和 2,我需要修改所有现有的代码来实现它,例如更改基类或使用新的属性进行装饰。考虑到我的情况,这将是一项艰巨的工作,因为需要修改成千上万个类或方法。我认为这有点啰嗦。因此,我想知道是否有像 3 这样简洁的方法可以为 ApiController 实现它。谢谢。
ActionFilters
和MessageHandlers
的组合来实现这一点。请参阅https://dev59.com/ZWjWa4cB1Zd3GeqPniPq#12300537和http://www.codeproject.com/Articles/581908/CreatingplusAdvancedplusAuditplusTrailsplususingpl,源代码在github上=>https://github.com/Rionmonster/Advanced-Auditing - Shiva