2009-04-23 10 views
0

j'ai un service Web ASP.NET (1.1) qui authentifie les clients utilisant une substitution SoapExtension.ProcessMessage (SoapMessage) comme décrit dans:Comment détecter quel protocole de service Web une demande ASP.NET utilise?

http://www.codeguru.com/columns/experts/article.php/c5479

Toutefois, si le web.config si pas configuré de telle sorte que HttpSoap est le seul protocole autorisé, alors ProcessMessage ne sera jamais appelé pour les demandes arrivant sur d'autres protocoles, et donc contourner la sécurité. Y at-il un moyen de s'assurer que le protocole SOAP est utilisé (plutôt que de se fier à web.config pour être correct)?

Merci.

+0

Je ne suis pas sûr, mais si vous souhaitez utiliser la propriété Request.HttpMethod. –

Répondre

2

S'il est de toute utilisation à tout le monde, je fini par vérifier:

Request.ServerVariables["HTTP_SOAPAction"] != null 

qui n'est pas idéal, mais semblait faire l'affaire.

0

Regardez dans Request.ServerVariables, en particulier la variable SERVER_PROTOCOL.

http://www.aspcode.net/List-of-RequestServerVariables.aspx

+0

SERVER_PROTOCOL ne contiendra-t-il pas "HTTP/1.1", que HttpSoap soit utilisé ou non? – stovroz

+0

Oui. J'ai mal lu la question et je suis habitué à juste vérifier entre http ou https. Vous pouvez toujours trouver le lien utile, mais probablement pas autant que je l'avais espéré. –

0

Vous pouvez essayer de lire et d'analyser le web.config au démarrage, pour voir si elle est définie la façon dont vous souhaitez qu'il soit.