RequestInterceptor в приложении службы REST WCF 4.0 - PullRequest
0 голосов
/ 14 июля 2010

У меня есть приложение службы REST WCF 4.0, которое я хотел бы перехватить входящий запрос и проверить пользовательский заголовок.В своем решении я использую следующую конечную точку по умолчанию

<standardEndpoints>
 <webHttpEndpoint>
        <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
 </webHttpEndpoint>
</standardEndpoints>

. Я попытался создать IDispatchMessageInspector и соответствующий BehaviorExtensionElement и добавить соответствующие поведениеExtension и endPointBehavior в мой web.config.Что еще мне нужно сделать, чтобы огонь перехватчика?

Я предполагаю, что мое полное отсутствие знаний о реальной работе WCF убивает меня здесь.Мой IParameterInspector был прост в реализации и отлично работает.Я надеялся, что это будет так же легко реализовать.

Ответы [ 2 ]

0 голосов
/ 13 августа 2014

Чтобы запустить перехватчик, вам также необходимо реализовать свою собственную фабрику хостов, а затем добавить перехватчики к вашему сервису, как показано ниже, после того как вы внедрили свой перехватчик пользовательских запросов, используя Microsoft.ServiceModel.Web.RequestInterceptor

 public class MyCustomHostFactory : ServiceHostFactory
   {
      protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
      {
         var serviceHost = new WebServiceHost2(serviceType, true, baseAddresses);
         RequestInterceptor interceptor = MySolution.RequestInterceptorFactory.Create();
         serviceHost.Interceptors.Add(interceptor);
         return serviceHost;
      }
   }
0 голосов
/ 18 июля 2010

Последующие действия:


Поскольку моя цель RequestInterceptor была сосредоточена на аутентификации, я смог достичь желаемого результата, используя класс, полученный из ServiceAuthorizationManager, и добавилна web.config следующим образом.

 <behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- This behavior enables Auth Token Verification -->
      <serviceAuthorization serviceAuthorizationManagerType="Something.Service.Authorization, Something.Service" />
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...