C# 服务器响应中的DateTime.UtcNow显示的时间晚于响应后在客户端调用的DateTime.UtcNow

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

我有一个客户端应用程序,它通过REST调用WEB API。出于管理原因,我希望节省相应步骤的时间,如下所示:

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内让大多数计算机运行。