Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF服务序列化编译时类型未知的对象_C#_.net_Wcf_Serialization_Json.net - Fatal编程技术网

C# WCF服务序列化编译时类型未知的对象

C# WCF服务序列化编译时类型未知的对象,c#,.net,wcf,serialization,json.net,C#,.net,Wcf,Serialization,Json.net,我正在尝试使用soap和rest端点创建一个web服务。但是我的对象有一个对象属性,我在编译时不知道它的类型。我为rest端点创建了一个自定义行为,该行为使用Json.NET进行序列化,因为默认的DataContractSerializer无法序列化我的动态对象。这一切都很好 [DataContract, JsonObject(MemberSerialization = MemberSerialization.OptIn)] public class TestClass1 { [Data

我正在尝试使用soap和rest端点创建一个web服务。但是我的对象有一个对象属性,我在编译时不知道它的类型。我为rest端点创建了一个自定义行为,该行为使用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
}
问题在于我的Soap端点仍然使用
DataContractSerializer
。我尝试运行它时出错,因为它无法序列化动态对象(我假设)

我得到的错误是:

接收对的HTTP响应时出错 . 这可能是由于服务 端点绑定不使用HTTP协议。这也可能是由于 服务器正在中止HTTP请求上下文(可能是由于 连接到服务(正在关闭)。有关详细信息,请参阅服务器日志

我试着用这个方法,但没用。它仍然无法序列化我的对象


如果我从TestObject类中删除该对象,一切正常。

是否尝试使用KnownType属性?我已经尝试过了,同样的问题。如果我使用它来获取Obj=null的对象,那么它可以工作,但是如果它是一个TestClass1对象,例如,它就不工作。但是当你返回一个值时,它是KnownType中声明的任何类型的同一类型吗?我像这里的答案那样做。我不想指定有效的类型,因为我没有关于该类型的任何信息。我不知道它将是X、Y或Z类型。它可以是任何类型。对于任意类型,您希望在XML中看到什么?在接收端,您如何知道要分配什么类型来反序列化XML?可能相关:。