2012-08-18 61 views
4

我正在使用MVC3和實體框架。在我的應用程序中,我需要通過EF調用SQL Server 2005中的存儲過程,以根據傳遞的datetime參數搜索一些數據。實體框架 - SQL Server 2005 - IIS服務器日期時間問題

一切似乎在當地環境中工作正常。但它託管到IIS後我得到一個異常,而試圖從日期13-08-2012搜索(13正在爲本月在SQL我猜)

錯誤說

SQLDATETIME溢出。必須是1753年1月1日

之間12:00:00 AM和12/31/9999下午11:59:59

我理解錯誤是因爲 System.DatetimeSqlDatetime之間的日期時間格式之間的差異。

但我不明白爲什麼它沒有任何問題在我的本地環境中使用相同的SQL Server,但在IIS服務器託管後出現此錯誤。

是否有解決此問題的方法?

+1

*是否有此問題的任何解決辦法?不要使用一個字符串。 – 2012-08-18 10:59:41

+0

其實我們在c#中使用System.DateTime,在SQL中使用DateTime類型 – ssilas777 2012-08-18 11:05:07

+0

你能顯示導致問題的代碼嗎? – 2012-08-18 11:06:24

回答

4

我的問題現在已解決。問題與IIS中的文化設置有關。 我已經將這些行添加到我的應用程序web.config中,現在它工作正常。

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

欲瞭解更多信息,請查看本Issue with culture settings in IIS

1

它依賴於服務器的文化,你可以用不變的格式格式化你的文化,在你的日期13-08-2012,它認爲13是月。

//Here an example of formatting with invariant culture 
CultureInfo yourCulture = CultureInfo.InvariantCulture; 
yourValue.ToString("yourFormat",yourCulture)); 
+0

謝謝Candie!你指出我正確的方向,但我已經嘗試了不變的格式文化。但它不適合我。 – ssilas777 2012-08-18 11:18:19

+0

我很樂意幫助你ssilas – 2012-08-18 11:19:14

+0

問題現在解決了。請在下面檢查我的答案。 – ssilas777 2012-08-18 11:25:35

0

驗證日期時間格式。另外,DateTimeSqlDateTime的範圍不一樣。如果您收到空值,您將遇到麻煩。