2008-12-16 7 views
0

Je deveploped un service simple WCF appelé CLSAPIService qu'il est contrat contient une méthode nommée UpdateLastOpenCloseCall:Managed C++ référence Web à des problèmes de service WCF

[OperationContract(Name = "UpdateLastOpenCloseCall", Action = "http://uniform.com/UpdateLastOpenCloseCall")] 
CallResult UpdateLastOpenCloseCall(int iSwitchID, int iAgentID, string strExtension, BusinessDataField[] bdFields); 

L'un de ses paramètres est un simple DataContract:

[DataContract] 
public struct BusinessDataField 
{ 
    [DataMember] 
    public string Name; 
    [DataMember] 
    public object Value; 
} 

Ensuite, j'ai créé un projet de test simple dans Managed C++ dans Visual .Net 2005, et créé une référence Web pour le service:

CLSAPIProxy::CLSAPIService^ service = gcnew CLSAPIProxy::CLSAPIService(); 
CLSAPIProxy::BusinessDataField ^f1 = gcnew CLSAPIProxy::BusinessDataField(); 
f1->Name = L"test_string"; 
f1->Value = L"string"; 

CLSAPIProxy::BusinessDataField ^f2 = gcnew CLSAPIProxy::BusinessDataField(); 
f2->Name = L"test_int"; 
f2->Value = 123; 

System::Collections::Generic::List<CLSAPIProxy::BusinessDataField^> ^list = gcnew; 
System::Collections::Generic::List<CLSAPIProxy::BusinessDataField^>(); 
list->Add(f1); 
list->Add(f2); 
service->UpdateLastOpenCloseCall(1,true,22817,true,L"24319",list->ToArray()); 

Lorsque la structure BusinessDataField arrive à la méthode WCF, il semble que seule la propriété Value est mis à jour, et la propriété Name est null, même si j'assiged une valeur.

Quel pourrait être le problème?

Répondre

1

s'il vous plaît ajouter à votre ordre membre de données. [DataMember (Name = "FirstName", IsRequired = true, commande = 2)] et consultez l'article suivant: Change The Order Of data members

Questions connexes