Generated client does not provide information about a known type with third-party

I have some problems with my service, about KnownType and inheritance. I read almost all similar questions, but I still have not found a solution. I will try to explain:

This is my interface:

[ServiceContract(Namespace = "MyNameSpace.Components.Web")]    
public interface ITransactionsService
{
    [OperationContract(Name = "Put")]        
    void Put(WebTransactionItem wtransactionItem);
}

this is my DataContract:

[DataContract(Namespace = "MyNameSpace.Components.Web")]
public class WebTransactionItem
{        
    [DataMember]
    public TransactionItem items { get; set; }

    [DataMember]        
    public TransactionItem[] TransactionItemList { get; set; }        
}   

TransactionItem is an abstract class provided in a (different) assembly.
The same assembly is used in the client project, so I have the same type that is referenced both on the client and on the server.
On the client side, after some operations (read the file, etc.), I have an array of objects that inherits from TransactionItem , says:

transItems[0] => TransactionHeaderObject
transItems[1] => TransactionTrailerObject

In Service Web.config, I added

<dataContractSerializer>
  <declaredTypes>        
    <add type="Namespace.TransactionItem, Assemblyname, Version=1.4.1.2, Culture=neutral, PublicKeyToken=null">
      <knownType type="Namespace.TransactionHeader, Assemblyname, Version=1.4.1.2, Culture=neutral, PublicKeyToken=null"/>
      <knownType type="Namespace.TransactionTrailer, Assemblyname, Version=1.4.1.2, Culture=neutral, PublicKeyToken=null"/>
    </add>
  </declaredTypes>
</dataContractSerializer>

, KnownTypeAttribute [Datacontract].

( ) check ( ) , :

MyNameSpace.Components.Web.WebTransactionItem wtItem = 
   new MyNameSpace.Components.Web.WebTransactionItem(){ 
       TransactionItemList = transItems}

. , ?
,

[DataMember]
public TransactionItem items { get; set; }

( , ) DataContract :

MyNameSpace.Components.Web: wtransactionItem. Innerexception: "Assemblyname.TransactionHeader" "TransactionHeader: http://schemas.datacontract.org/2004/07/Assemblyname" .

, , , TransactionHeader ( TransactionItem) , (. Web.Config, knowntypeAttribute)!! , Reference.cs, , (

[DataMember]
public TransactionItem items { get; set; }

)

:

[KnownTypeAttribute(typeof(Assemblyname.TransactionHeader))]

[KnownTypeAttribute(typeof(Assemblyname.TransactionTrailer))]

. , , ( Reference.cs) , . TransactionItem, Web.config( KnownTypeAttribute.). ?

+3
1

"ServiceKnownTypeAttribute"?
, WCF .
(, , ) , -, KnownTypeAttribute.
, , , , :

 [ServiceKnownType("GetKnownTypes", typeof(Helper))]

. http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceknowntypeattribute.aspx.

0

All Articles