2014-04-02 6 views
7

Ziemlich grundlegende Frage, aber ich kann nicht die Antwort überall zu finden scheinen.Erstellen eines neuen Wörterbuch in einer SOAP-Envelope

Wie geben Sie eine neue Instanz eines Dictionary<string, string> in SOAP? Im Prinzip habe ich diesen Umschlag (weggelassen Top-Level-Tag für Lesbarkeit Umschlag):

<soapenv:Body> 
    <tem:LogInWithCredentials>  
     <tem:Request>    
     <ttf1:Password>password</ttf1:Password>   
     <ttf1:UserName>username</ttf1:UserName> 
     <ttf1:RequestInfo></ttf1:RequestInfo> 
     </tem:Request>  
    </tem:LogInWithCredentials> 
</soapenv:Body> 

RequestInfo Eigentum in Frage, aber es ist immer null. Ich nahm an, dass nur das Vorhandensein der Immobilie im Umschlag in eine leere Dictionary<string, string> deserialisiert werden würde, dies ist jedoch nicht der Fall.

+0

Traditionell sind Wörterbücher in .NET nicht serialisierbar. Trotzdem kann DataContractSerializer dies ohne Probleme bewältigen. Ich vermute, dein Problem ist nicht der Serializer. –

+0

Aus welchem ​​Grund denken Sie, dass dies als Wörterbuch deserialisiert werden würde? Wie ist es im Schema definiert? Und, haben Sie versucht, eine Service-Referenz zu verwenden? Was ist in diesem Fall der Typ der generierten Eigenschaft? –

Antwort

1

Wie @flem sagt, die DataContractSerializer könnte die Hinweise benötigt, um diese zu beantworten. Das Serialisieren eines leeren Wörterbuchs ergibt das folgende XML. Probieren Sie es in Ihrem RequestInfo-Element aus und prüfen Sie, ob es funktioniert (ich habe es selbst nicht getestet).

<ArrayOfKeyValueOfstringstring 
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays" /> 
+0

Würde der Downvoter sich darum kümmern? Wenn es nicht funktioniert, werde ich die Antwort entsprechend aktualisieren. –

Verwandte Themen