Есть ли способ узнать, является ли запрос мыльным запросом для события AuthenticateRequest для HttpApplication? Проверка ServerVariables ["HTTP_SOAPACTION"], кажется, не работает все время.
public void Init(HttpApplication context) {
context.AuthenticateRequest += new EventHandler(AuthenticateRequest);
}
protected void AuthenticateRequest(object sender, EventArgs e) {
app = sender as HttpApplication;
if (app.Request.ServerVariables["HTTP_SOAPACTION"] != null) {
// a few requests do not enter here, but my webservice class still executing
// ...
}
}
Я отключил HTTP POST и HTTP GET для веб-сервисов в моем файле web.config.
<webServices>
<protocols>
<remove name="HttpGet" />
<remove name="HttpPost" />
<add name="AnyHttpSoap" />
</protocols>
</webServices>
Просмотр ContentType для мыла + xml только частично решает мою проблему. Например,
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 1131
Content-Type: text/xml
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: ro
Host: localhost
mymethod: urn:http://www.wsnamespace.com/myservice
У некоторых клиентов вместо стандартного заголовка SOAPAction: "http://www.wsnamespace.com/myservice/mymethod", есть что-то похожее на пример выше." Mymethod "представляет метод в моем классе веб-службы с атрибутом [WebMethod] и" http://www.wsnamespace.com/myservice" - это пространство имен веб-службы. Тем не менее сервис работает совершенно нормально.
Потребители используют разные фреймворки (NuSOAP из PHP, .NET, Java и т. Д.).