Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net SqlDateTime溢出。在web api中,必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间_Asp.net_Sql Server 2008_Asp.net Mvc 4_Asp.net Web Api - Fatal编程技术网

Asp.net SqlDateTime溢出。在web api中,必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间

Asp.net SqlDateTime溢出。在web api中,必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间,asp.net,sql-server-2008,asp.net-mvc-4,asp.net-web-api,Asp.net,Sql Server 2008,Asp.net Mvc 4,Asp.net Web Api,我正在尝试使用asp.net上的c#在web api中构建一个post方法 MVC4.每当我使用fiddler将值发布到此api时,我都会得到 以下错误: SqlDateTime溢出。必须在1753年1月1日12:00:00 AM和 1999年12月31日晚上11:59:59 我已经在我的web API控制器中编写了以下代码 创建数据访问层以访问数据库中的数据 public HttpResponseMessage postsg(MsgModel项) { if(ModelState.IsValid

我正在尝试使用asp.net上的c#在web api中构建一个post方法 MVC4.每当我使用fiddler将值发布到此api时,我都会得到 以下错误:

SqlDateTime溢出。必须在1753年1月1日12:00:00 AM和 1999年12月31日晚上11:59:59

我已经在我的web API控制器中编写了以下代码 创建数据访问层以访问数据库中的数据

public HttpResponseMessage postsg(MsgModel项)
{
if(ModelState.IsValid&&item!=null)
{
使用(dc=new MsgDataContext())
{
var dbMsg=new Msg()
{
Msg_Title=item.Msg_Title,
Msg_Date=item.Msg_Date,
};                  
dc.Msgs.InsertOnSubmit(dbMsg);
dc.SubmitChanges();//在这行代码中获取上述错误
var response=Request.CreateResponse(HttpStatusCode.Created,item);
字符串uri=Url.Link(“DefaultApi”,新的{id=dbMsg.Msg_id});
response.Headers.Location=新Uri(Uri);
返回响应;
}
}
其他的
{
返回请求.CreateResponse(HttpStatusCode.BadRequest);
}
}
我通过执行
网址http://localhost:65070/api/signup 请求主体{
“消息标题”:“我们的第一条消息”,“消息日期”:“2012/02/23T00:00:00”}

错误本身告诉解决方案-


您正在分配的日期时间值不在这两个日期之间。只需在插入数据库之前检查日期。如果日期小于1753年1月1日,则传递DateTime.MinValue;如果日期大于9999年12月31日,则传递DateTime.MaxValue

日期值
'Msg_date':“2012/02/23T00:00:00”
您传递的参数未正确解析(作为“已知”日期字符串)-它没有时区/与任何“已知”不匹配


请参见使用
SqlTypes.SqlDateTime.MinValue
而不是
DateTime.MinValue为我解决了这个问题<如果您已经在代码中使用了
DateTime
对象,则可以使用code>SqlTypes.SqlDateTime.MinValue.Value

您的问题是将字符串解析为DateTime对象。如果
Msg_Date
是DateTime对象,C sharp将尝试隐式转换。如果失败,将返回null。但不允许数据库中DateTime对象的空值,因此出现此异常。在将实体保存到数据库之前进行一些调试。找到一个合适的日期格式,因为这似乎是你的问题。
查看post,或者阅读一些。

调试您的方法我猜
item.Msg\u Date
是DateTime.Min。或者您在
Msg
上有一些额外的日期时间字段,您没有填写这些字段。不,如果您按照此处的说明操作,则会出现此错误。我知道这是一个事实,因为这是我调试的代码,看起来是合乎逻辑的。
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"}