我们在 IIS 6.0 上的 Windows 2003 服务器上运行 .NET 2.0 ASMX Web 服务。我们已使用 VB.NET 将旧版 VB 6.0 应用程序迁移到 .NET 2.0 应用程序。CDATE 函数在许多地方使用,我们并没有用 .NET 等效日期函数替换它。
迁移后,代码运行多年。
最近,我们在生产服务器上遇到问题,以下代码失败:
CDATE("2011 年 7 月 11 日 21:10:27")
错误:从字符串“2011 年 7 月 11 日 21:10:27”转换为类型“日期”无效。
如果我们执行 iisreset,相同的代码就会开始正常工作。
这可能是由于 Windows 服务器/.NET 补丁的最新补丁造成的吗?请帮助我们解决此问题。
答案1
一般建议:不要使用 IISReset。仅回收有问题的应用程序池。
这虽然不能解决问题,但可以减少恢复服务时的停机时间。
答案2
我可能错了,但我怀疑它对某些日期有效,但对其他日期无效。
为了识别和处理日期,CDate 函数会根据系统区域设置得出理想的日期格式。请检查服务器上的区域设置,并确保输入格式与系统日期格式相匹配。
理想情况下,通过从 IFormatProvider 接口获取日期时间格式,以编程方式修复此问题:http://msdn.microsoft.com/en-us/library/9xk1h71t.aspx