【发布时间】:2015-12-22 18:32:46
【问题描述】:
我正在尝试寻找一种更简洁的方法来将审计跟踪功能添加到现有的 asp.net MVC 和 Web Api 项目中,该项目包含数百个 Controller 和 ApiController。
审计跟踪日志如下所示。基本上我只想在这个函数中记录In what time who did what。
UserID
ActionTime
Controller
Action
我错过了什么?如果有 。请纠正我。谢谢。
目前我发现有一些方法可以做到。
实现一个
ActionFilterAttribute,并在OnActionExecuting中编写我自己的日志函数,然后用这个属性装饰所有的动作。为所有现有控制器实现一个基本的
Controller,如BaseController。并在OnActionExecuting中写入日志。然后将所有控制器更改为从BaseController继承。 (如有错误请指正。谢谢。)对于
ApiController。实现一个DelegatingHandler来实现它。
对于 1 和 2。我需要更改所有现有代码才能完成。比如改变基类或用新属性装饰。考虑到我的情况,这将是一项艰苦的工作。因为成千上万的类或方法需要改变。我认为这有点冗长。所以我想知道 ApiController 是否有像 3 这样的干净方法来实现它。谢谢。
【问题讨论】:
-
我认为您可以使用
ActionFilters和MessageHandlers的组合来做到这一点。请参阅 github 上的 stackoverflow.com/a/12300537/325521 和 codeproject.com/Articles/581908/… 源代码 => github.com/Rionmonster/Advanced-Auditing -
MVC 控制器中有没有类似 DelegatingHandler 的东西?所以我不需要更改现有代码。对不起。我是懒人。。谢谢。
-
我知道你提到的方法是很好的解决方法。但我只是想找出一种更好或懒惰的方法。谢谢。
-
这两个库实现了动作过滤器,为 NET Core 和 NET 4.5 的 WebAPI 和 MVC 生成审计跟踪。你可以看看Audit.MVC和Audit.WebApi上的代码
-
这是一个非常好的库。他们工作得很好。感谢您的帮助。
标签: c# asp.net-mvc asp.net-mvc-5 audit