我有一个使用 ASP.NET Web API 与客户端通信的服务器。
我在服务器端的模型更详细,客户端的数据更少,所以我使用 [DataContract]/[DataMember] 来匹配两者。
这是服务器端的模型:
[DataContract]
public class Discussion
{
public Discussion()
{
this.Posts = new HashSet<Post>();
this.Members = new HashSet<UserProfile>();
}
[DataMember]
public int DiscussionId { get; set; }
[DataMember]
public int AuthorId { get; set; }
public int CategoryId { get; set; }
[Required]
[MinLength(4)]
[MaxLength(140)]
[DataMember]
public string DiscussionSubject { get; set; }
[Required]
[MinLength(10)]
[MaxLength(10000)]
[DataMember]
public string DiscussionDescription { get; set; }
[Required]
[DataMember]
public DateTime CreateDate { get; set; }
[Required]
[DataMember]
public DateTime LastChangeDate { get; set; }
[NotMapped]
[DataMember]
public int NumberOfPosts { get { return Posts.Count; } }
[DataMember]
public virtual UserProfile Author { get; set; }
public virtual Category Category { get; set; }
public virtual ICollection<UserProfile> Members { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
这是客户端模型:
[DataContract]
public class Discussion
{
[DataMember]
public int DiscussionId { get; set; }
[DataMember]
public int AuthorId { get; set; }
[DataMember]
public string DiscussionSubject { get; set; }
[DataMember]
public string DiscussionDescription { get; set; }
[DataMember]
public DateTime CreateDate { get; set; }
[DataMember]
public DateTime LastChangeDate { get; set; }
[DataMember]
public int NumberOfPosts { get; set; }
[DataMember]
public virtual UserProfile Author { get; set; }
}
现在,当我发送一个发布请求时,我得到一个内部服务器错误,并且在我调试时甚至没有到达 Post 方法点
Discussion discussion = new Discussion
{
DiscussionSubject = subject,
DiscussionDescription = description,
};
response = await client.PostAsJsonAsync(requestUri, discussion);
response.EnsureSuccessStatusCode();
我想问题在于反序列化,因为当我将模型更改为另一个模型时,它很好。很高兴知道当我发送Get
请求时,一切都正常。
我该如何解决这个问题,我在哪里可以看到确切的内部服务器错误是什么?
编辑:这是服务器端的 Post 方法:
public HttpResponseMessage Post(Discussion discussion)
我希望反序列化在这里自动发生(从接收到的客户端到Discussion
服务器Discussion
)。