servicestack 入站复杂DTO具有空子对象,servicestack,servicestack" /> servicestack 入站复杂DTO具有空子对象,servicestack,servicestack" />

servicestack 入站复杂DTO具有空子对象

servicestack 入站复杂DTO具有空子对象,servicestack,servicestack,奇怪的问题-我有一个包含多个子对象的复杂DTO,声明如下: [守则] public class ScoutingReportProPitcher { [DataMember] public Guid ReportID { get; set; } [DataMember] public ScoutingReport Report { get; set; } [DataMember] public ScoutingReportPro Pro { ge

奇怪的问题-我有一个包含多个子对象的复杂DTO,声明如下:

[守则]

public class ScoutingReportProPitcher
{
    [DataMember]
    public Guid ReportID { get; set; }

    [DataMember]
    public ScoutingReport Report { get; set; }
    [DataMember]
    public ScoutingReportPro Pro { get; set; }
    [DataMember]
    public ScoutingReportPitcher Pitcher { get; set; }
}
[/code]

所有信息都已正确发送到客户端。当他试图将数据发送回PUT或POST时,子对象不会被填充。我认为可能必须初始化DTO构造函数中的子对象,但这只会导致入站对象具有所有空属性的子对象

我让我的UI开发人员将他发布给我的JSON对象发送给我,当我运行JsonSerializer.DeserializeFromString时,该对象似乎已正确填充

我还可以看什么来确定对象没有从外部正确地传递到POST方法中的原因


谢谢

您能告诉我们您试图发送的json数据吗?还有发送PUT和POST的代码是什么样子的

你试过使用Fiddler并查看数据吗

要查看代码中的原始数据,需要截取输入流并防止发生反序列化。修复后,您将希望撤消此操作

首先用IRequiresRequestStream之类的工具装饰您的DTO课堂

public class ScoutingReportProPitcher : IRequiresRequestStream  
{
    public System.IO.Stream RequestStream { get; set; }
    ....
 }
其次,在OnBeforeExecute(T请求)方法中,您可以通过记录或使用断点检查json数据来达到峰值

protected override void OnBeforeExecute(T request)
{
    var rawData = base.RequestContext.Get<IHttpRequest>().GetRawBody();
    base.OnBeforeExecute(request);
}
受保护的覆盖无效OnBeforeExecute(T请求)
{
var rawData=base.RequestContext.Get().GetRawBody();
base.onbeforecute(请求);
}

请参阅此处以获得更完整的解释:

我将此标记为正确,因为您希望看到jquery代码执行PUT/POST。事实证明,错误就在这段代码中,我们在ajax调用中缺少了“accept:application/json”和contenttype:application/json”子句。