问题描述
请考虑以下代码行:
DateTime d;
DateTime.TryParse("16-10-2020",out d);
在控制台应用程序中运行时,返回日期时间16-10-2020 00:00:00。使用文化nl-NL,如我的Windows区域设置中所定义。但是,在64位主机实例上的Biztalk 2016管道组件中运行时,2020年10月10日不是有效日期。经检查,似乎使用美国文化来解析日期字符串。我没有在代码中明确指定要使用的区域性,因此希望BizTalk也可以使用nl-NL。
这两种方案都在同一台计算机上的相同.NET Framework版本上运行。是什么解释了行为上的差异?
我在BizTalk服务器配置中找不到任何特定的区域性配置。可能是BizTalk在安装过程中在我不知道的地方存储了区域性信息,但是当区域设置更改时却无法更新?只是猜测。有人吗?
解决方法
BizTalk服务帐户的区域设置与我的用户不同,这解释了行为上的差异。
如果预先知道格式,最好使用TryParse精确。