C# asp.net webapi中的Azure web app时区错误

C# asp.net webapi中的Azure web app时区错误,c#,asp.net-web-api,timezone,azure-webapps,C#,Asp.net Web Api,Timezone,Azure Webapps,我在azure paas环境中有web应用程序。我需要在不同的时区转换时间,我有以下代码,这些代码在dev机器上运行得非常好,但是当我在azure paas环境上部署时,它会抛出错误 TimeZoneInfo serverTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(TimeZone.CurrentTimeZone.StandardName); return TimeZoneInfo.ConvertTimeT

我在azure paas环境中有web应用程序。我需要在不同的时区转换时间,我有以下代码,这些代码在dev机器上运行得非常好,但是当我在azure paas环境上部署时,它会抛出错误

TimeZoneInfo serverTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(TimeZone.CurrentTimeZone.StandardName);
                return TimeZoneInfo.ConvertTimeToUtc(_lastUpdatedDate.Value, serverTimeZoneInfo);
第一行抛出异常。从“ViewModels.Orders.OrderActivityViewModel”上的“DateCreated”获取值时出错。

以下几点:

  • 不要使用
    时区
    类。它已经过时了。仅使用
    TimeZoneInfo
  • 对于所有情况,
    StandardName
    Id
    不同。它还受操作系统语言的影响,而
    Id
    不受影响
  • 本地时区的Id位于
    TimeZoneInfo.local.Id
    ,尽管在您已经拥有它的情况下,按Id查找它是没有意义的。您只需使用
    TimeZoneInfo.Local
  • 如果您只是将本地时间转换为UTC,则根本不需要处理时区,只需在原始的
    DateTime
    DateTimeOffset
    值上使用
    .ToUniversalTime()
  • 服务器的时区可能已经是UTC。这是Azure中的默认设置。因此,它根本不会做任何事情
  • 如有必要,您可以更改Azure应用程序服务的
    网站\u时区
    设置(仅限Windows),但我不建议这样做。如果您心中有一个特定的时区,那么您可以将该ID传递到
    TimeZoneInfo.FindSystemTimeZoneById
  • 正如其他人所指出的,您报告的错误不在您提供的代码中,因此这些都可能对您没有帮助

您可以包括抛出错误的行吗?我在您发布的代码中没有看到任何对DateCreated属性的引用。您应该逐字复制异常。它不会发生在您粘贴到此处的第一行。