Я создал рабочую службу WCF. Теперь я хочу добавить некоторую безопасность для фильтрации адресов Ip. Я последовал примеру, который microsoft публикует в образцах, чтобы попытаться добавить IDispatchMessageInspector, который вызовет вызов AfterReceiveRequest, а затем выкинет ошибку, если ip-адрес не из разрешенного списка.
После просмотра кода; они настроили его с помощью "wsHttpBinding", однако я хочу использовать "webHttpBinding" или "basicHttpBinding". Но когда я его установил, я получаю сообщение об ошибке:
Конечная точка на 'http://upload/api/Api.svc/soap' не имеет Связывание с None MessageVersion. 'System.ServiceModel.Description.WebHttpBehavior' предназначен только для использовать с WebHttpBinding или аналогичными привязками.
Моя конфигурация:
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
</serviceHostingEnvironment>
<!--Set up the service-->
<services>
<service behaviorConfiguration="SOAPRESTDemoBehavior" name="HmlApi">
<endpoint address="rest" binding="webHttpBinding" contract="VLSCore2.Interfaces.IHmlApi" behaviorConfiguration="SOAPRESTDemoEndpointBehavior" />
<endpoint address="soap" binding="basicHttpBinding" contract="VLSCore2.Interfaces.IHmlApi" behaviorConfiguration="SOAPRESTDemoEndpointBehavior" />
</service>
</services>
<!--Define the behaviours-->
<behaviors>
<serviceBehaviors>
<behavior name="SOAPRESTDemoBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<!---Endpoint -->
<endpointBehaviors>
<behavior name="SOAPRESTDemoEndpointBehavior">
<ipFilter/>
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add name="ipFilter" type="VLSCore2.Api.IpFilterBehaviourExtensionElement, VLSCore2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
</system.serviceModel>
Так что мне интересно, как я могу настроить своего инспектора сообщений без использования WebHttpBinding. Возможно ли это?
Я хочу использовать SOAP 'basicHttpBinding', а не wsHttpBinding (и все WS *) связанные с этим накладные расходы....