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?