【问题标题】:C# method DateTime.TryParse() behaves differently on same machine in BizTalk versus Console appC# 方法 DateTime.TryParse() 在 BizTalk 与控制台应用程序中的同一台机器上的行为不同
【发布时间】:2021-02-11 19:58:50
【问题描述】:

考虑以下代码行:

DateTime d;
DateTime.TryParse("16-10-2020", out d);

在控制台应用程序中运行时,将返回日期时间 16-10-2020 00:00:00。使用文化 nl-NL,如我的 Windows 区域设置中所定义。但是,当在 64 位主机实例上的 Biztalk 2016 管道组件内运行时,16-10-2020 不是有效日期。经检查,似乎文化 en-US 用于解析日期字符串。我没有明确指定要在我的代码中使用的任何文化,因此希望 BizTalk 也使用 nl-NL。

两种方案都在同一台机器上的相同 .NET Framework 版本上运行。是什么解释了行为上的差异?

我在 BizTalk 服务器配置中找不到任何特定的文化配置。会不会是 BizTalk 在安装过程中将文化信息存储在我不知道的某个地方,但在区域设置更改时未能更新?只是猜测。有人吗?

【问题讨论】:

  • 我不知道 biztalk 但如果你想要一种特定的文化,为什么不明确地使用呢?如果格式是固定的,您也可以更具体并使用TryParseExact()
  • 查看以下内容以在 svc 文件中设置区域性:stackoverflow.com/questions/2056424/…
  • 我猜 BizTalk 正在另一个具有不同区域设置的帐户下运行。也许this site 可以提供帮助。无论如何,我同意 41686d6564 你应该明确设置格式。
  • 也许问题是不同的区域设置。您是否尝试使用 [InvariantCulture]? 【不变文化】:docs.microsoft.com/en-us/dotnet/api/…
  • 确实,BTS 服务是在具有不同区域设置的服务帐户下运行的。路德感谢您的解决方案!

标签: c# datetime biztalk regional-settings biztalk-2016


【解决方案1】:

BizTalk 服务帐户的区域设置与我的用户不同,这解释了行为差异。

如果预先知道格式,最好使用 TryParse。

【讨论】:

    猜你喜欢
    • 2017-02-20
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多