Примеры для Cache.Add используют DateTime.Now.Add
для вычисления срока действия, то есть он передает:
DateTime.Now.AddSeconds(60)
как значение параметра absoluteExpiration
.
Я бы подумал, что вычисление его относительно DateTime.UtcNow
было бы более правильным [поскольку нет двусмысленности, если начальное время перехода на летнее время начинается с промежуточного времени между текущей и конечной точкой истечения срока).
До введения DateTimeKind
я бы догадался, что в управлении кешем есть некоторые уродливые хаки, чтобы сделать что-то подходящее, если время не было временем UTC.
В .NET 2.0 и более поздних версиях я предполагаю, что он должен обрабатывать DateTime
, рассчитанный как DateTime.UtcNow.AddSeconds(60)
правильно, учитывая, что он имеет DateTime.Kind
для использования в качестве входных данных в своих выводах.
Я уверенно использовал DateTime.UtcNow
как основу в течение многих лет, но не смог прийти к обоснованию, что это определенно правильная вещь, которую нужно делать в отсутствие чего-либо, указывающего на то, что документация была крайне ошибочной для 4+ лет.
Вопросы?
- Несмотря на многоголосый и гуглинг, я не смог найти авторитетного обсуждения этого вопроса с MS - может ли кто-нибудь найти что-то в этом отношении?
- Есть ли причина, по которой использование UtcNow не будет более правильным и/или безопасным?
(Да, я мог бы изучить источник и/или источник Reflector'd, но я ищу полную пошаговую выдувку!)