• Авторизация


IHttpHandler и WSE Routing 03-04-2006 23:33 к комментариям - к полной версии - понравилось!


WSE представляет два новых класса, имплементирующих IHttpHandler :
SoapHttpRouter и SoapReceiver. Как и любые другие реализации IHttpHandler, эти добавляются в ASP.NET-приложение секцией в в <system.web>, как например:
<system.web>
<httpHandlers>
<add type="namespace.myHttpHandler, assemblyName" path="*.ashx" verb="*" />
</httpHandlers>
...
</system.web>

при этом, если приложение настроено для WSE, то WseCongigEditor узнает такую конфигурацию :

[528x594]

Это, конечно, означает, что вне зависимости от чего наследует ваш handler - от SoapReciver или от SoapHttpRouter - он будет вызван при любом запросе сервера через ashx, т.е. во всех трёх случаях ваш handler может переадресовывать сообщения, только вот из разных методов, зависящих от реализации.



















Имплементация Метод
1. IHttpHandler public void ProcessRequest(HttpContext ctx)
2. SoapHttpRouter protected override Uri ProcessRequestMessage(SoapEnvelope message)
3. SoapReceiver protected override void Receive (Microsoft.Web.Services2.SoapEnvelope envelope)


Следующий вопрос, поэтому, как переадресовывать. В первом случае, имея дело только с HttpContext, это выглядит довольно проблематично, и уже поэтому, реализация раутера прямым наследованием от IHttpHandler не будет рассматриваться. Переадресация из SoapHttpRouter - это именно то, что делает встроенный в WSE Messaging.SoapHttpRouter, так что вряд ли его стоит повторять : читаем ReferralCache.config и возвращаем из ProcessRequestMessage() новый Uri - вот и весь раутинг для http, но так и наследуемый класс и называется SoapHttpRouter!
Итак, исталось наиболее интересное : SoapReceiver.Receive().
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник IHttpHandler и WSE Routing | Oleg_Kleiman - Soft kibitzing | Лента друзей Oleg_Kleiman / Полная версия Добавить в друзья Страницы: раньше»