【发布时间】:2009-07-01 16:54:06
【问题描述】:
这是我的问题。我正在研究部署到多个欧洲国家的电子商务解决方案。我们将应用程序中的所有异常都保存到 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 中的回调不维护上下文?有没有办法在这个回调线程上维护它?这里有哪些最佳做法?
谢谢。
【问题讨论】:
标签: asp.net delegates callback httpruntime