WCF服务序列化对象,在编译时类型为unkown

时间:2015-09-24 14:00:06

标签: c# .net wcf serialization json.net

我尝试使用soap和rest端点创建Web服务。但我的对象有一个对象属性,其类型我在编译时不知道。我为我的休息端点创建了一个自定义行为,它使用Json.NET进行序列化,因为默认的DataContractSerializer无法序列化我的动态对象。这一切都很好。

[DataContract, JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class TestClass1
{
    [DataMember, JsonProperty]
    public string p1 { get; set; }
    [DataMember, JsonProperty]
    public int p2 { get; set; }
}
[DataContract, JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class TestClass2
{
    [DataMember, JsonProperty]
    public DateTime t1 { get; set; }
    [DataMember, JsonProperty]
    public int t2 { get; set; }

}
[DataContract]
public class TestObject : SerializableDynamicObject
{
    [DataMember, JsonProperty]
    public int Id { get; set; }
    [DataMember, JsonProperty]
    public string Name { get; set; }
    [DataMember, JsonProperty]
    public object Obj { get; set; } //DataContractSerializer can't serialize this
}

问题出在我仍然使用DataContractSerializer的Soap端点上。我尝试运行它时遇到错误,因为它无法序列化动态对象(我假设)。

我得到的错误是:

  

接收HTTP响应时发生错误   http://localhost:63222/Service1.svc。这可能是由于服务   端点绑定不使用HTTP协议。这也可能是应该的   到服务器中止的HTTP请求上下文(可能是由于   关闭服务)。有关详细信息,请参阅服务器日志。

我尝试使用this方法,但无济于事。它仍然无法序列化我的对象。

如果我从TestObject类中删除对象,一切都很好。

0 个答案:

没有答案