Проблема здесь на самом деле не в ASP.NET, а в количестве информации, предоставляемой браузером в запросе http. Дата истечения срока действия будет недоступна независимо от платформы, которую вы используете на стороне сервера.
Как вы подытожили в своем вопросе, свойство Expires объекта HttpCookie, предоставляемого объектом HttpRequest, всегда установлено на 01.01.01 00:00.
Это связано с тем, что эта информация об истечении срока действия, а также такие свойства, как домен и путь, не передаются браузером на сервер при отправке запроса. Единственная отправляемая информация о файлах cookie - это имя и значение. Поэтому куки в запросе будут иметь значения по умолчанию для этих «пропущенных» полей, поскольку они неизвестны на стороне сервера.
Я полагаю, что причина этого в том, что атрибуты cookie, имеющие срок действия, домен и путь, предназначены для использования браузером только при принятии решения о том, должен ли он передавать cookie в запросе или нет и что сервер интересуется только именем и значением (ями).
Обходной путь, который вы предложили дублировать время истечения, поскольку другое значение cookie - это способ получить поведение, которое вы ищете.