2011-05-04 4 views
0

J'ai un projet qui utilise un fichier asmx avec [WebMethods] et [SoapHeader ("Auth")]. Je n'ai aucune expérience de l'utilisation de SOAP et je ne comprends pas encore comment cela fonctionne. En parcourant le code, j'ai remarqué que vous pouvez utiliser une variable avec le même nom que l'en-tête et qu'elle contient les données. Comment les données sont-elles envoyées à l'en-tête? D'où est ce que ça vient?Comment fonctionnent les en-têtes SOAP dans les services Web ASMX?

Répondre

1

Les données proviennent de XML dans la section <soap:Header> de l'enveloppe SOAP.

+0

Alors quelque chose envoie une requête SOAP et cet attribut saisit l'en-tête? Est-ce exact? – chobo

+2

Plus ou moins. Il peut y avoir plus d'un en-tête. Seul l'en-tête correspondant sera saisi. –

2

Les données sont envoyées en en-tête en utilisant une classe dérivée de SoapHeader. Cette classe sera déclarée comme une propriété dans votre classe webservice. Ensuite, dans votre méthode Web, vous allez vérifier les informations d'authentification dans cette propriété avant de traiter la méthode actuelle.

Une implémentation simple peut être trouvée ici http://www.codeproject.com/KB/cpp/authforwebservices.aspx

Le lien suivant msdn raconte une autre technique similaire, ce qui serait plus sophistiqué un http://msdn.microsoft.com/en-us/library/9z52by6a.aspx.

L'idée de base derrière le transfert de données dans l'en-tête reste la même.