0

奇怪的问题 - 我有一个复杂的 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; }
}

[/代码]

一切都被正确地发送给客户端。当他尝试在 PUT 或 POST 中将数据发送回时,子对象未填充。我想也许我必须在 DTO 构造函数中初始化子对象 - 但这只是导致入站对象具有子对象所有空属性。

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

我还能看什么来确定为什么对象没有从外部正确传递到 POST 方法?

谢谢

4

1 回答 1

2

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

您是否尝试过使用 Fiddler 并查看数据?http://www.fiddler2.com/fiddler2/

要查看代码中的原始数据,您需要拦截输入流并防止发生反序列化。一旦你修复它,你会想要撤消它。

首先用 IRequiresRequestStream 装饰你的 DTO 类

public class ScoutingReportProPitcher : IRequiresRequestStream  
{
    public System.IO.Stream RequestStream { get; set; }
    ....
 }

其次,在 OnBeforeExecute(T request) 方法中,您可以通过使用断点记录或检查来达到 json 数据的峰值。

protected override void OnBeforeExecute(T request)
{
    var rawData = base.RequestContext.Get<IHttpRequest>().GetRawBody();
    base.OnBeforeExecute(request);
}

有关更完整的说明,请参见此处:https ://groups.google.com/d/topic/servicestack/l9qFvZNbuT0/discussion

于 2012-07-31T21:05:30.563 回答