0

asp.net mvc 4 で c# を使用して Web API でポスト メソッドを構築しようとしています。フィドラーを使用してこの API に値をポストするたびに、次のエラーが発生します。

SqlDateTime オーバーフロー。1753 年 1 月 1 日午前 12:00:00 から 9999 年 12 月 31 日午後 11:59:59 までの間である必要があります

Web 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"}
4

4 に答える 4

0

エラー自体が解決策を示しています-

これら 2 つの日付の間にない DateTime 値を割り当てています。データベースに挿入する前に日付を確認してください。日付が 1753 年 1 月 1 日未満の場合は DateTime.MinValue を渡し、日付が 9999 年 12 月 31 日より大きい場合は DateTime.MaxValue を渡します。

于 2013-03-25T12:03:56.653 に答える
0

渡された日付値'Msg_Date':"2012/02/23T00:00:00"パラメーターが (「既知の」日付文字列として) 適切に解析されていません - タイムゾーンがありません/「既知の」日付形式と一致しません。

見るDateTime.TryParse

于 2013-03-25T13:59:19.490 に答える
0

問題は、文字列を DateTime オブジェクトに解析していることです。が DateTime オブジェクトの場合Msg_Date、C シャープは暗黙的な変換を試みます。失敗した場合は null が返されます。ただし、データベース内の DateTime オブジェクトの null 値は許可されていないため、この例外が表示されます。エンティティをデータベースに保存する前に、デバッグを行ってください。それがあなたの問題のように思われるので、適切な日付形式を見つけてください。この投稿を確認するか、いくつかのドキュメントを読んでください。

于 2015-01-02T14:12:35.447 に答える
-1

SqlTypes.SqlDateTime.MinValue代わりに使用すると、DateTime.MinValueこの問題が修正されます。コードで既にオブジェクトをSqlTypes.SqlDateTime.MinValue.Value使用している場合に使用できます。DateTime

于 2014-09-09T17:47:17.900 に答える