Переполнение SqlDateTime. Должно быть между 1/1/1753 12:00:00 AM и 12/31/9999 11:59:59 PM в web api

Вопрос: Я пытаюсь создать почтовый метод в веб-api с помощью С# на asp.net mvc 4. Когда бы я ни опубликовал значение для этого api, используя скрипт, я получаю следующую ошибку: Переполнение SqlDateTime. Должно быть между 1/1/1753 12:00:00 AM и 12/31/9999 11:59:59 PM Я написал следующий код в контроллере веб-API. Я также создал уровень доступа к

Вопрос:

Я пытаюсь создать почтовый метод в веб-api с помощью С# на asp.net mvc 4. Когда бы я ни опубликовал значение для этого api, используя скрипт, я получаю следующую ошибку:

Переполнение SqlDateTime. Должно быть между 1/1/1753 12:00:00 AM и 12/31/9999 11:59:59 PM

Я написал следующий код в контроллере веб-API. Я также создал уровень доступа к данным для доступа к данным в базе данных

public HttpResponseMessage PostMsg(MsgModel item) { if (ModelState.IsValid && item!=null) { using (dc = new MsgDataContext()) { var dbMsg = new Msg() { Msg_Title= item.Msg_Title, Msg_Date = item.Msg_Date, }; dc.Msgs.InsertOnSubmit(dbMsg); dc.SubmitChanges();// Getting the above error at this line of code var response = Request.CreateResponse<MsgModel>(HttpStatusCode.Created, item); string uri = Url.Link(«DefaultApi», new { id = dbMsg.Msg_Id}); response.Headers.Location = new Uri(uri); return response; } } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } } I am posting the following request body from fiddler by executing the url http://localhost:65070/api/signup Request Body { ‘Msg_Title’:»our first msg», ‘Msg_Date’:»2012/02/23T00:00:00″} Ответ №1

Сама ошибка указывает на solution-

Вы назначаете значение DateTime, которое не находится между этими двумя датами. Просто проверьте дату перед вставкой в базу данных. Если дата меньше 1/1/1753, то передайте DateTime.MinValue и если дата больше 12/31/9999, пройдите DateTime.MaxValue

Ответ №2

Значение даты ‘Msg_Date’:»2012/02/23T00:00:00″ вы передаете, не обрабатывается должным образом (как “известная” строка даты) – он не имеет часового пояса/не соответствует любой “известный” формат даты.

См. DateTime.TryParse

Ответ №3

Ваша проблема заключается в том, что вы разбираете строку с объектом DateTime. Если Msg_Date является объектом DateTime, C sharp попытается использовать неявное преобразование. Если это произойдет, то null будет возвращено. Но значения null для объекта DateTime в вашей базе данных не допускаются, чтобы это исключение появилось. Сделайте некоторую отладку, прежде чем сохранять свою сущность в базе данных. Найдите подходящий формат даты, потому что это, кажется, ваша проблема. Проверьте это сообщение или прочитайте документацию.

Ответ №4

Использование SqlTypes.SqlDateTime.MinValue вместо DateTime.MinValue исправляет эту проблему для меня. SqlTypes.SqlDateTime.MinValue.Value можно использовать, если вы уже используете объекты DateTime в своем коде.

Оцените статью
Добавить комментарий