FTP Последнее время записи файла - wininet.dll C # обертка - Дата годом ранее - PullRequest
2 голосов
/ 05 мая 2011

Я использую следующую библиотеку http://ftplib.codeplex.com/, которая является оболочкой для wininet.dll для выполнения некоторых команд FTP.

Полученное приложение отлично работает на 3 компьютерах с Windows XP.Однако у одного и того же приложения, работающего на двух разных компьютерах с Server 2003, возникают проблемы.

Любой файл, дата последнего изменения которого менее 12 часов назад, заканчивается датой последнего изменения за 12 месяцев до того, как онона самом делеЯ использую следующий код для преобразования из структуры FILETIME в datetime.Это работает нормально, это фактические переданные значения, которые являются неправильными

uint low = (uint)time.dwLowDateTime;
long ft = (((long)time.dwHighDateTime) << 32 | low);
DateTime.FromFileTimeUtc(ft));
return DateTime.FromFileTimeUtc(ft);

Ниже приведен некоторый вывод трассы для проверки входных данных.Фактическое время файлов для файлов при просмотре в программе ftp составляет 30 минут, а не год.

Windows filetime = 129490226400000000
Converted To = 4/05/2011 10:44:00 p.m.
Windows filetime = 129174884400000000
Converted To = 4/05/2010 11:14:00 p.m.

Я посмотрел региональные настройки и часовые пояса на всех тестовых компьютерах, и они одинаковы.Все тесты проводились на одном и том же FTP-сервере, и сравнивались одни и те же файлы.Из того, что я прочитал, wininet.dll является той же версией в XP, что и Server 2003. У кого-нибудь есть идеи, почему время файла, которое мы получаем, неверно?

PS Я читал о проблемах с ftp-серверами, возвращающимися только деньзначения месяца и месяца, и это может вызвать проблемы при получении файлов с конца предыдущего года, в начале нового года, когда значения даты файлов будут проходить через год, но это, похоже, не связано, так как это относится к разнымКлиентские среды ftp, и уже год, а файлы были созданы накануне.

...