这是我的问题。我正在研究部署到多个欧洲国家的电子商务解决方案。我们将应用程序中的所有异常都保存到 SQL Server 中,我发现数据库中的某些记录在未来具有 DateTime!
我们在 web.config 中定义文化,例如 pt-PT,预期格式为 DD-MM-YYYY。
调试后,我发现数据库中这些“未来”记录的问题是由于我们使用的回调方法。例如,在我们的缓存架构中,我们使用回调,因此 -
CacheItemRemovedCallback ReloadCallBack = new CacheItemRemovedCallback(OnRefreshRequest);
当我检查当前线程 CultureInfo 时,在这些回调上它是 en-US 而不是 pt-PT 并且 HttpContext 为空。如果回调发生异常,我们的异常管理器会将其报告为 MM-DD-YYYY,因此它会错误地保存到 SQL Server。
不幸的是,在异常管理器代码中,我们使用了 DateTime.Now,如果它不是回调就可以了。我无法将此代码更改为特定于文化,因为它在其他垂直领域共享。
那么,为什么不回调到 ASP.Net 维护上下文?有没有办法在这个回调线程上维护它?这里有哪些最佳实践?
谢谢。