在Model中设置DateTime的内部500错误

时间:2016-01-05 05:09:47

标签: c# asp.net asp.net-mvc datetime asp.net-web-api

嘿,我得到一个奇怪的内部500错误。我把它缩小到发现DateTime结构给了我这个,但我很难理解为什么。所以我使用的是asp.net web api,目前正在存储信息。

 public void StoreFacebookInfo(string accessToken, IdentityUser user)
    {
            //Retrieve Facebook Mutual Friends
            dynamic myMutualFriends = fb.Get(curFbId + "?fields=context.fields(mutual_friends)");
            if (myMutualFriends.context.mutual_friends.data != null)
            {
                foreach (var item in myMutualFriends.context.mutual_friends.data)
                {
                    var f = JsonConvert.DeserializeObject<mutualFriends>(item.ToString());
                    profileInfo.mutualFriendsList.Add(f);
                }
            }
            //Save all information retrieved from FB into a db
            profileInfo.externalId = myInfo.id;
            profileInfo.name = myInfo.name;
            profileInfo.firstName = firstname.first_name;
            profileInfo.lastName = lastname.last_name;
            profileInfo.link = link.link;
            profileInfo.gender = gender.gender;
            profileInfo.imageURL = "https://graph.facebook.com/" + myInfo.id + "/picture?type=large";
            profileInfo.locale = locale.locale;

            profileInfo.UserId = user.Id;
            db.UserInfoes.Add(profileInfo);
            db.SaveChanges();
        }
 }

如你所见,一切看起来都很好。在我的模型中,我有以下内容:

  public class UserInfo
{
    public UserInfo()
    {
        this.friendsList = new List<friends>();
        this.mutualFriendsList = new List<mutualFriends>();
    }
    [Key]
    public int id { get; set; }
    public string externalId { get; set; }
    public string name { get; set; }
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string link { get; set; }
    public string gender { get; set; }
    public string imageURL { get; set; }
    public string locale { get; set; }
    public string language { get; set; }
    public string travellevel { get; set; }
    public DateTime birthdate { get; set; }
    [ForeignKey("UserId")]
    public IdentityUser User { get; set; }
    public string UserId { get; set; }
    public List<mutualFriends> mutualFriendsList { get; set; }
    public List<friends> friendsList { get; set; }
}

当我使用DateTime作为生日时,当它到达db.saveChanges()时,代码会遇到内部500错误。当我将此DateTime更改为字符串时,代码运行正常,我可以保存信息。这对我来说很奇怪,因为当我在另一台计算机上运行它时,它与DateTime完全正常,而不是将其更改为字符串。

如果你能解释一下这个错误,那就太好了。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我认为您的问题是您的客户的语言文化与您的服务器不同,并严重解析DateTime(即:dd / MM / yyyy vs MM / dd / yyyy)。

尝试以相同的格式序列化和解析DateTime。