我正在使用自定义 ActionFilterAttribute
在 ASP.NET 应用程序中执行一些日志记录。我正在添加收入信息(通过 OnActionExecuting
)和传出信息(通过 OnActionExecuted
)的日志记录。
我们有一个调用 token (GUID),我可以在OnActionExecuting
中访问它,并且它是正在记录的信息的一部分。我希望在 OnActionExecuted
中完成的日志记录中使用相同的 token 。
我的问题:
- 是否为每个来电创建一个
ActionFilterAttribute
实例? - 这是用于
OnActionExecuting
和OnActionExecuted
的同一个实例(允许我将 token 存储为成员变量)吗?
最佳答案
由于没有人回复,并且我通过自己的测试得到了答案,因此我想在这里发布答案。
事实证明,操作过滤器的实例被创建并在各种 Controller 操作调用之间共享。因此,使用成员变量在请求(在 OnActionExecuting 中设置它)和响应(在 OnActionExecuted 中读取它)之间共享公共(public)数据并不是完成我的任务的可靠方法。有意为之。
关于asp.net - ASP.NET ActionFilter 的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63745793/