Я предположил бы, что Windows ленив и - при наблюдении, что все остальное в новом файле идентично старому - просто снова использует запись в таблице файловой системы, которая была ранее отмечена для удаления.
Этот вид поведения на самом деле документируется здесь.
Метки времени обновляются неоднократно и по различным причинам. Единственная гарантия о метке времени файла - то, что время файла правильно отражается, когда дескриптор, который вносит изменение, закрывается.
(Мой акцент)
Редактирование для добавления: Я предполагаю, что Вы хотели бы использовать что-то как SetFileTime в Вашем приложении после создания файла.
devguy,
Если ваше приложение представляет собой простое веб-приложение с большим количеством операций чтения и записи, Azure станет отличным решением. С другой стороны, если ваше приложение будет довольно сильно воздействовать на SQL Azure (пишет и читает), я бы ему не доверял. У нас есть приложение, которое довольно масштабно и выполняет большую часть обработки данных. У нас ужасный опыт, когда база данных просто падает и возвращает тайм-ауты более 10 минут. Конечно, он возвращается в норму, но как только мы начнем его колотить, он снова выйдет из строя. У нас нет таких проблем с физической базой данных.
Если у вас есть возможность использовать их механизм хранения таблиц в качестве бэкэнда, у вас не должно возникнуть никаких проблем. Это довольно быстро и надежно.
Что касается безопасности, это действительно зависит от того, что вы ищете. Если вам необходимо заблокировать запросы на основе IP-адресов (например, для защищенной интрасети), вы захотите сделать это в своем коде, а не через веб-конфигурацию или IIS. Мы несколько раз сталкивались с тем, что Azure просто теряла эти настройки в IIS, и ваше приложение внезапно открывалось миру.
Короче говоря, я не доверяю им ни в чем критически важном. С другой стороны, Rackspace и Amazon, у меня никогда не было проблем с ними.