将数据保存在内存中并持续存在于Application_Disposed上

时间:2012-02-01 08:54:58

标签: asp.net persistence

我正在构建一个网站(供个人使用,低负载),而不是使用Access或MySQL数据库进行数据存储我正在考虑在Application_Start上加载和解析一个XML文件,然后保留在内存中(在静态对象中)。然后,网站会对这些内存中的对象进行读写操作,最后我会将所有数据保存到Application_Disposed上的XML文件中。

我知道我需要使读/写线程安全,但除此之外,有没有人看到使用这种方法的任何问题?

2 个答案:

答案 0 :(得分:0)

是的,我发现了一个大问题:有很多原因导致整个应用程序在您不知情的情况下死亡,并且没有将数据保存到该xml文件中。

答案 1 :(得分:0)

您会发现 Application_Dispose 可以被多次触发(因此可能不是处理 DI 容器等的最佳位置)而 Application_End 只会触发一次(您可以通过添加日志来证明这一点)

https://bytes.com/topic/asp-net/answers/561768-event-sequence

https://docs.microsoft.com/en-us/previous-versions/ms178473(v=vs.140)?redirectedfrom=MSDN

当您停止调试时,VS2019 IIS Express 似乎没有像它应该调用的那样调用 Application_End,但是 IIS 会。