奇怪的问题 - 我有一个带有几个子对象的复杂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构造函数中初始化子对象 - 但这只是导致入口对象具有子对象所有空的属性。
我的UI开发人员向我发送了他正在POST给我的JSON对象,当我运行JsonSerializer.DeserializeFromString时,对象似乎正确填充。
我还能看到什么来确定对象未从外部正确传递到POST方法的原因?
感谢
答案 0 :(得分: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请求)方法中,您可以通过使用断点记录或检查来在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