C# 服务器响应中的DateTime.UtcNow显示的时间晚于响应后在客户端调用的DateTime.UtcNow
我有一个客户端应用程序,它通过REST调用WEB API。出于管理原因,我希望节省相应步骤的时间,如下所示:C# 服务器响应中的DateTime.UtcNow显示的时间晚于响应后在客户端调用的DateTime.UtcNow,c#,asp.net,.net,datetime,C#,Asp.net,.net,Datetime,我有一个客户端应用程序,它通过REST调用WEB API。出于管理原因,我希望节省相应步骤的时间,如下所示: var requestStartTime = DateTime.UtcNow; response = api.MakeSomeRequest(); serverEntryTime = response.ServerEntryTime; var requestEndTime = DateTime.UtcNow; public MyDto MakeSomeRequest() { va
var requestStartTime = DateTime.UtcNow;
response = api.MakeSomeRequest();
serverEntryTime = response.ServerEntryTime;
var requestEndTime = DateTime.UtcNow;
public MyDto MakeSomeRequest()
{
var dto = new MyDto();
dto.ServerEntryTime = DateTime.UtcNow;
//Some action
return dto;
}
服务器端代码如下所示:
var requestStartTime = DateTime.UtcNow;
response = api.MakeSomeRequest();
serverEntryTime = response.ServerEntryTime;
var requestEndTime = DateTime.UtcNow;
public MyDto MakeSomeRequest()
{
var dto = new MyDto();
dto.ServerEntryTime = DateTime.UtcNow;
//Some action
return dto;
}
现在,我的问题是,当我检查时间戳时,有时requestEndTime
显示的时间比serverEntryTime
早(仅以毫秒为单位):
serverEntryTime
=2021-06-04 12:35:29.123
requestEndTime
=2021-06-04 12:35:29.119
客户端和服务器位于不同的计算机上,但位于同一时区。不同机器上的不同DateTime结构是否可能在这种错误范围内运行?或者有其他解释吗?是的,一般认为不同机器的时间相差不大。您应该避免使用客户端计算机的时间(为了一致性)。计算机时钟只能与时间服务器和计算机之间的传播延迟一样精确。数据包传输时间可能不同。另外,很多客户端根本无法正确设置时间。NTP协议应该能在128ms内让大多数计算机运行。