11
|
Samuel Neff · 技术社区 · 15 年前 |
|
1
3
我们也遇到了同样的问题。只需回收您的应用程序池。 |
![]() |
2
7
如果您确切知道格式,请告诉应用程序它是什么-使用
|
|
3
3
我们有一个运行在Windows2003服务器上的C#.NET2.0Web服务。这项服务已经运行了两年多。我们最近开始在该应用程序中遇到错误。错误消息为“字符串未被识别为有效的日期时间”。另一个web服务返回一个日期,该函数应该返回如下值
不正确的返回值在末尾有空格,并且没有AM。 在接下来的几周里,这个问题出现并消失了好几次。在检查windows日志后,我们注意到错误的开始和结束时间与应用程序池回收时间一致(在一到两分钟内),应用程序池回收时间设置为(默认情况下)每29小时发生一次。此问题仅发生在生产web服务器上,而不是在开发或测试服务器上。我们尝试更换服务器,一个月没有出现错误。现在错误又开始了。我们手动重置池,问题立即消失。我们不认为这是一个可接受的解决方案,因为游泳池会定期回收。我们不知道是否需要池回收,但我们的理解是,定期回收有助于提高应用程序性能。 web应用程序已使用ParseExact(),但格式字符串如下所示: 而不是
我们还检查了文化设置。 很明显,问题是从应用程序池回收开始的,但我不知道在回收过程中会发生什么。大多数时候,回收没有负面影响,当错误确实发生时,下一次回收总是停止错误。 |
![]() |
4
2
我知道这并不能解释差异,但你的软件确实不应该依赖“默认”文化(除了UI)。 |
![]() |
5
1
我刚刚找到了一些导致此问题的信息。我们的C#客户端将业务日期(仅日期)作为字符串值发送给web服务。web服务将SqlParameter中的该字符串传递给SqlCommand,并将其传递给接受
检查内存转储时,我发现客户端在参数数据集中传入了正确的日期字符串“2012-10-25 00:00:00”。web服务调用存储过程时,不知怎的把这些日期的转换搞砸了。我在转储中找到了SqlCommand,并检查了与存储过程的日期参数相对应的SqlParameter。该值为“2012年10月25日12:00:00 PM”。 查看所有CultureInfo对象,我发现“en-US”的区域设置1033有一个很长的时间字符串“h:mm:ss tt”。AMDesignator是“AM”,但是 PMDesignator是一个空字符串 ! 我通过运行以下命令验证了这是C#中错误日期的原因:
我还没有确定是什么导致CultureInfo被破坏。 Microsoft is aware of this issue . 链接的文章说它只适用于WindowsServer2003,并且有一个可用的修补程序。 |
![]() |
6
0
听起来文化对象似乎不理解军事时间符号。老实说,我不确定从那里走到哪里,但这可能会给你一个起点。 |
![]() |
7
0
这本书的价值是什么
可能是因为某些用户设置超越了这一点? |
![]() |
8
0
这是一个大胆的猜测,但可能是类似这一系列事件造成了问题:
回收服务器上的所有新ASP.NET工作线程现在都将看到更改的时间格式及其
这是一个非常不可能的情况,但同样,你有一个非常不可能的情况。您可以尝试在所有服务器上回收相关的应用程序池,看看是否有任何变化。 |