4

我正在使用 MVC3 和实体框架。datetime在我的应用程序中,我需要通过 EF 调用 SQL Server 2005 中的存储过程,以根据传递的参数搜索一些数据。

在本地环境中,一切似乎都运行良好。但是在将它托管到 IIS 之后,我在尝试从日期开始搜索时遇到了一个异常13-08-2012(我猜在 SQL 中需要 13 个月)

错误说

SqlDateTime 溢出。必须在 1753 年 1 月 1 日上午 12:00:00 到 9999 年 12 月 31 日晚上 11:59:59 之间

System.Datetime我理解错误是因为和之间的日期时间格式不同SqlDatetime

但我不明白为什么它在使用相同 SQL Server 的本地环境中没有任何问题但在 IIS 服务器中托管后出现此错误。

这个问题有什么解决方法吗?

4

3 回答 3

4

我的问题现在已经解决了。问题在于 IIS 中的文化设置。我已将这些行添加到我的应用程序 web.config 中,它现在工作正常。

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB"/>

有关更多信息,请查看IIS 中的文化设置问题

于 2012-08-18T11:23:18.027 回答
1

它取决于服务器的文化,您可以使用不变格式格式化您的文化,在您的日期 13-08-2012 上,它认为 13 为月份。

//Here an example of formatting with invariant culture
CultureInfo yourCulture = CultureInfo.InvariantCulture;
yourValue.ToString("yourFormat",yourCulture));
于 2012-08-18T11:06:29.877 回答
0

验证日期时间格式。此外,DateTime与 的范围不同SqlDateTime。如果你收到一个空值,你会遇到麻烦。

于 2012-08-18T11:15:37.813 回答