2010-06-16 3 views

Répondre

1

Les services Web ASMX n'utilisent pas le pipeline ASP.NET complet. Je ne crois pas que ces deux événements se déclenchent même pour un service web.

Pour accéder au flux de données SOAP, vous devez implémenter un SoapExtension.


Bien sûr, je voudrais également saisir cette occasion pour rappeler aux lecteurs que Microsoft considère désormais des services Web ASMX d'être une « technologie héritée ». Ils suggèrent que tout nouveau développement de services Web devrait utiliser WCF.

+0

Merci John. Je suis conscient que WCF est le remplacement des bons services web. Cependant, vous vous trompez en ce qui concerne les demandes Application_BeginRequest et Application_EndRequest qui ne sont pas invoquées depuis asmx. Ils sont en effet appelés correctement par le serveur web. La question que j'ai est de savoir comment "extraire" l'information de savon de l'objet Demande, le débogueur y casse mais l'objet a trop de choses incorporées et je n'arrive pas à trouver le corps de savon. – Ash

+0

@Ash: Je suis content que les événements se déclenchent, mais il n'y a pas de place pour récupérer le corps. Comment obtiendriez-vous le corps de requête HTTP d'une requête HTTP "normale" dans une application ASP.NET "normale"? –

+0

Après beaucoup de recherches, la seule façon possible était d'écrire ma propre classe SoapExtension pour arriver au message soap xml – Ash

2

Si ces événements déclenchés dans ce cas, vous pouvez lire le contenu XML de la demande en appelant:

Request.InputStream.Read(...); 

puis:

Request.InputStream.Seek(0, SeekOrigin.Begin); 

pour réinitialiser l'emplacement InputStream.

Questions connexes