Ordre des paramètres de WCF et d'entrée dans l'enveloppe SOAP
-
12-12-2019 - |
Question
Je reçois une référence d'objet non définie sur une instance d'erreur d'objet dans mon service Web WCF qui utilise Webhttpbinding (SOAP 1.1) J'ai remarqué que si vous avez les paramètres d'entrée dans un certain ordre, l'erreur ne se déclenche pas..
I.e.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://schemas.globalfoundries.com/NotificationService">
<soapenv:Header/>
<soapenv:Body>
<not:NotifyWorkflowItemUpdate>
<not:userIDs>testUserID</not:userIDs>
<not:taskID>testTaskID</not:taskID>
<not:taskType>testTaskType</not:taskType>
<not:status>testStatus</not:status>
<not:appID>testAppID</not:appID>
<not:message>testMessage</not:message>
</not:NotifyWorkflowItemUpdate>
</soapenv:Body>
</soapenv:Envelope>
Toutefois, si je modifie l'ordre des paramètres d'entrée dans le modèle de demande, j'obtiens l'erreur susmentionnée.I.E. (NOTE Les paramètres du message et des utilisateurs sont commutés)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://schemas.globalfoundries.com/NotificationService">
<soapenv:Header/>
<soapenv:Body>
<not:NotifyWorkflowItemUpdate>
<not:message>testMessage</not:message>
<not:taskID>testTaskID</not:taskID>
<not:taskType>testTaskType</not:taskType>
<not:status>testStatus</not:status>
<not:appID>testAppID</not:appID>
<not:userIDs>testUserID</not:userIDs>
</not:NotifyWorkflowItemUpdate>
</soapenv:Body>
</soapenv:Envelope>
Pourquoi cela se produit-il?Les paramètres de demande sont-ils mappés sur les paramètres de méthode .NET via la commande et non par les noms?Existe-t-il un attribut que je dois spécifier sur le contrat de service pour faire la cartographie du paramètre nommé possible?
La solution
Vous devez utiliser xmlSerializerformat dans votre interface de service WCF.
[ServiceContract, XmlSerializerFormat]
public interface IGoodMessageService
{
...
}
Problème et solution sont expliqués dans ce lien: HTTP: //nimke.blogspot.com.tr/2012/03/serialization-Ordinateur-caus-problems.html
Autres conseils
Le schéma XML de votre message SOAP spécifie la commande.Dans XML, l'ordre des éléments d'élément et la WCF valident le XML contre le schéma.