对于实施例Cache.Add使用DateTime.Now.Add来计算到期,即,其通过:
DateTime.Now.AddSeconds(60)
Run Code Online (Sandbox Code Playgroud)
作为absoluteExpiration参数的值.
我认为相对计算它DateTime.UtcNow会更正确[因为如果夏令时在现在和到期点之间的间隔开始时没有歧义].
在介绍之前DateTimeKind,我已经猜到缓存管理中有一些丑陋的黑客攻击,如果时间不是UTC时间,它可以做一些合适的事情.
在.NET 2.0及更高版本中,我猜测它应该正确处理DateTime计算,DateTime.UtcNow.AddSeconds(60)因为它必须DateTime.Kind在推理中用作输入.
多年来我一直在自信地使用它DateTime.UtcNow作为基础,但是没有能够提出这样的理由:如果没有任何指出文档在4年多的时间里一直存在误导性,这绝对是正确的做法.
问题?
(是的,我可以仔细阅读源和/或反射器的来源,但我正在寻找一个完整的逐个打击的低点!)
我注意到ASP.NET缓存项每20秒检查一次(并且可能被删除)(每次HH时奇怪的是:MM:00,HH:MM:20和HH:MM:40).我花了大约15分钟来查看如何更改此参数而没有任何成功.我还尝试在web.config中设置以下内容,但它没有帮助:
<cache privateBytesPollTime="00:00:05" />
Run Code Online (Sandbox Code Playgroud)
我不是想做任何疯狂的事情,但是如果它是5秒而不是20,或者至少10我的应用程序会很好.
我们要求在ASP.Net应用程序中,应该每天在指定时间自动调用.Net进程.此过程需要与数据库(SQL Server 2005)交互并每天生成计费.我们正在使用共享主机,因此我们无法创建Windows服务或创建SQL Server作业.如果没有用户干预,如何实现这一目标?