2011-09-28 11 views
22

Çalışan bir WCF hizmeti oluşturdum. Şimdi Ip Adreslerini filtrelemek için biraz güvenlik eklemek istiyorum. Örnekte microsoft örneklerini yayımlamak için bir IDispatchMessageInspector'ı çağırıp, bir AfterReceiveRequest çağrısı yapacak ve sonra ip adresi izin verilen listeden değilse bir hata atayım.WCF servisim neden 'Hiçbir Mesaj İleti Yok ile Bağlama Yok' iletisini veriyor?

Kodu inceledikten sonra; 'wsHttpBinding' kullanarak yapılandırdılar, ancak 'webHttpBinding' veya 'basicHttpBinding' kullanmak istiyorum. Bunu kurarken Ama hatayı alıyorum:

The endpoint at 'http://upload/api/Api.svc/soap' does not have a Binding with the None MessageVersion. 'System.ServiceModel.Description.WebHttpBehavior' is only intended for use with WebHttpBinding or similar bindings.

Benim yapılandırma:

<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> 

Yani im merak ne WebHttpBinding kullanmadan mesajım müfettişi kurabilirsiniz nasıl. Bu mümkün mü?

Ben WSHttpBinding değil 'basicHttpBinding' SOAP kullanmak istiyorum ilişkili giderler (ve WS * tümü) ....

cevap

35

Eğer SOAP ve bitiş noktaları de REST ikisi için tek bir endpointBehavior yapılandırmış nedeni basitçe oluyor ancak SOAP bitiş noktası webHttp davranışına sahip olamaz.

<endpointBehaviors> 
    <behavior name="SOAPDemoEndpointBehavior"> 
     <ipFilter/> 
    </behavior> 
    <behavior name="RESTDemoEndpointBehavior"> 
     <ipFilter/> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 

ve ardından bitiş noktaları olmalıdır:

<endpoint address="rest" binding="webHttpBinding" contract="VLSCore2.Interfaces.IHmlApi" behaviorConfiguration="RESTDemoEndpointBehavior" /> 
    <endpoint address="soap" binding="basicHttpBinding" contract="VLSCore2.Interfaces.IHmlApi" behaviorConfiguration="SOAPDemoEndpointBehavior" /> 
+0

Bu sayede spot sürü olduklarını böylece birbirinden bunlar bölmek gerekir. Adil bir hizmet için tüm doğru son noktaları kurmak için önemli olduğunu düşünüyorum adil! – Exitos

+0

Adam Zaten birkaç saat boyunca mücadele ediyordum ve buraya bağlamayı değiştirmediğimi fark ettim :))) Mobil uygulamadan http isteği için temel kullanıyordum ... thumb up + – dpaul1994

İlgili konular