2009-04-23 9 views
0

Ich habe eine ASP.NET (1.1), die Web-Service-Clients, wie beschrieben unter Verwendung einer SoapExtension.ProcessMessage (Soapmessage) Überschreibung authentifiziert:Wie erkennt man, welches Web-Service-Protokoll eine ASP.NET-Anfrage verwendet?

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

wenn die web.config wenn nicht derart eingerichtet ist, dass jedoch HttpSoap ist das einzige zugelassene Protokoll, dann wird ProcessMessage niemals für Anforderungen aufgerufen, die mit anderen Protokollen eingehen, und somit die Sicherheit umgehen.

Gibt es trotzdem programmatisch sicherstellen, dass SOAP verwendet wird (im Gegensatz zu der Web.config, um korrekt zu sein)?

Danke.

+0

Ich bin mir nicht sicher, aber wenn Sie Request.HttpMethod Eigenschaft verwenden möchten. –

Antwort

2

Wenn es von Nutzen für jedermann ist, landete ich Überprüfung:

Request.ServerVariables["HTTP_SOAPAction"] != null 

was nicht ideal ist, aber es schien, den Trick zu tun.

0

Suchen Sie in Request.ServerVariables, speziell die SERVER_PROTOCOL Variable.

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

+0

Wird SERVER_PROTOCOL nicht "HTTP/1.1" enthalten, unabhängig davon, ob HttpSoap verwendet wird? – stovroz

+0

Ja. Ich habe die Frage falsch gelesen und bin es gewohnt, einfach zwischen http oder https zu suchen. Vielleicht finden Sie den Link immer noch hilfreich, aber wahrscheinlich nicht so, wie ich es mir erhofft hatte. –

0

Sie könnten versuchen, die web.config beim Start zu lesen und zu analysieren, um zu sehen, ob es die Art und Weise festgelegt ist Sie es möchten sein.