我正在使用MVC3和实体框架。在我的应用程序中,我需要通过 EF 调用 SQL Server 2005 中的存储过程,以根据传递datetime
参数搜索一些数据。
在当地环境中,一切似乎都运行良好。但是在将其托管到 IIS 中后,我在尝试从日期 13-08-2012
进行搜索时出现异常(我猜 13 在 SQL 中占月)
错误说
SqlDateTime overflow。必须介于 1/1/1753 12:00:00 AM 和 9999-12-31 下午11:59:59
我理解错误是因为System.Datetime
和SqlDatetime
之间的日期时间格式之间的差异。
但是我不明白为什么它在我使用相同的SQL Server的本地环境中没有任何问题,但在IIS服务器中托管后出现此错误。
此问题是否有任何解决方法?
我的问题现在已经解决了。IIS 中的区域性设置存在问题。我已将这些行添加到我的应用程序 web.config 中,它现在工作正常。
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB"/>
有关详细信息,请查看 IIS 中的区域性设置问题
IT 取决于服务器的文化,您可以使用固定格式格式化您的文化,在您的日期 13-08-2012,它认为 13 是月。
//Here an example of formatting with invariant culture
CultureInfo yourCulture = CultureInfo.InvariantCulture;
yourValue.ToString("yourFormat",yourCulture));
验证日期时间格式。此外,DateTime
的范围与SqlDateTime
不同。如果您收到空值,则会遇到麻烦。