У меня есть клиентское и серверное приложение. Клиент находится на сервере Великобритании, и сервер находится на US-сервере.UTC Разница во времени сервера
На сервере есть проверка, которая проверяет, когда сообщение было отправлено от клиента, и сравните его, чтобы увидеть разницу во времени.
Это, как я получаю промежуток времени на клиентском приложении (Великобритания):
DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = DateTime.UtcNow - epochStart;
// Convert to string before send it to server
string requestTimeStamp = Convert.ToUInt64(timeSpan.TotalSeconds).ToString()
На сервере (США) конца у меня есть: отлично
DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan currentTs = DateTime.UtcNow - epochStart;
var serverTotalSeconds = Convert.ToUInt64(currentTs.TotalSeconds);
var requestTotalSeconds = Convert.ToUInt64(requestTimeStamp);
if ((serverTotalSeconds - requestTotalSeconds) > requestMaxAgeInSeconds)
{
//....
}
Все работает, когда сервер и клиент находится на сервере Великобритании, но проблемы возникают, когда есть разные.
Мои вопросы:
- ли время UTC таже на обоих серверах независимо от разницы во времени зоны/время?
- Является ли время, взятое из системного времени ПК? (Так что, если время устанавливается в неправильном в системе
DateTime.UtcNow
дают мне неправильное время?)
«но проблемы возникают ...» - не могли бы вы на самом деле описать нам, какие проблемы? –
правильный по обоим пунктам. в частности, если время сервера составляет всего несколько секунд, ваши сравнения не будут полностью точными. однако, если все сообщения поступают на сервер США, то эта неточность будет постоянной, поэтому вы должны разработать стратегию для решения этой проблемы. –
Взгляните на это: https://technet.microsoft.com/ en-us/library/cc773013% 28v = ws.10% 29.aspx –