我遇到了一个问题,向HttpApplicationState中添加了长时间运行的单例,该单例执行一些数据屏蔽(GDPR),在后台运行一段时间后停止屏蔽数据。
很难调试,因为它仅发生在我们的UAT环境中,并且通常在一夜之间发生。
问题在于数据屏蔽库是第三方,并且仍在进行中(或在进行中时结束)。
但是,如果有人对GC有更好的了解,可以查看下面的初始化代码,并确认它不在GC域之内,我将不胜感激。
Translator.GetInstance()是GDPR屏蔽/翻译单例的惰性加载器。因此,它是在用户第一次屏蔽/取消屏蔽数据时初始化的。
protected void Application_Start()
{
if (Translator)
{
Application["MaskDataUtility"] = new MaskDataUtility(Translator.GetInstance());
}
else
{
Application["MaskDataUtility"] = new MaskDataUtility(new CustomTranslator());
}
}