Как я могу проверить, работает ли моя служба WCF с какой-либо привязкой при реализации IDispatchMessageInspectors - PullRequest
0 голосов
/ 17 января 2012

Я работаю со службой WCF, которая имеет несколько конечных точек. Я реализовал методы из BehaviorExtensionElement, IServiceBehavior, IDispatchMessageInspector для проверки заголовков сообщений перед обработкой каждого запроса. Я проверил это, и он отлично работает с wsHttpBinding.

Я хочу убедиться, что мой сервис (так как в нем есть инспекторы сообщений) прекрасно работает с NetTcpBinding, NamedPipe и другими видами привязок. Как я могу это сделать?

1 Ответ

0 голосов
/ 17 января 2012

IDispatchMessageInspector используется для проверки или изменения входящих или исходящих сообщений приложения либо перед отправкой сообщения-запроса в операцию, либо перед возвратом ответного сообщения вызывающей стороне.

Инспекторы сообщений находятся выше в стеке (на уровне диспетчеризации), поэтому привязка, используемая конечной точкой, не имеет значения.

Например:

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
   foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
   {
         var cd = cdb as ChannelDispatcher;

         if (cd != null)
         {
            foreach (var ed in cd.Endpoints)
            {
               ed.DispatchRuntime.MessageInspectors.Add(new AuthorizationHeaderGetter());
               ed.DispatchRuntime.InstanceProvider = new UserTokenInjector(serviceDescription.ServiceType);
            }
         }
   }
}

В приведенном выше коде нет упоминания о «виде» привязки (wsHttp или NetTcp).

Что касается вашего вопроса, какпроверить это, я не уверен, что вы будете тестировать.В ApplyDispatchBehavior нечего тестировать (кроме фреймворка WCF).Вы можете написать модульный тест для проверки вашего класса IDispatchMessageInspector.

...