【发布时间】:2017-04-03 11:14:13
【问题描述】:
故事:我的 asp.net mvc 5 web api 项目中有以下组件(首先使用 ef 代码)
- myBaseController : 基础 api 控制器类
-
myLogger : 我的服装记录器类
class myBaseController { MyLogger Logger; }class MyLogger { public addLog(Log log) { db.logs.add(log); db.saveChanges(); } }
每个 api 控制器使用base.logger.addLog(new log("somethings")) 并且日志立即提交到数据库。
问题:我希望MyLogger 类能够收集内存中的所有日志以及一些将主题一次添加到数据库的位置。
我把它放在了
protected override void Dispose(bool disposing)
{
logger.AddRange(_logs);
}
但它不起作用,似乎对象在此方法中不可用或从内存中抓取
应该如何处理?
【问题讨论】:
-
在会话中粘贴日志。
-
您希望如何保留日志条目?按要求?按会话?通过任意时间范围?根据设计,每个控制器都将被框架为每个动作“更新”,这就是你看到这种行为的原因。如果您希望日志在请求中持久存在,则需要将日志持久保存到内存中。
-
当然日志条目应该在每个请求结束时插入到数据库中(对于每个动作调用)。@PhilCooper
标签: asp.net-mvc asp.net-web-api controller