Question

Je suis en train de mettre la sécurité au niveau de transport sur un service WCF liant webHttp ma config actuelle ressemble à ceci

 <system.serviceModel>
<client>
  <endpoint binding="webHttpBinding" bindingConfiguration="webHttp"
    contract="PrimeStreamInfoServices.IService1" name="Client" />
</client>
<bindings>
<webHttpBinding>
  <binding name="webHttp" maxBufferPoolSize="1500000"  maxReceivedMessageSize="1500000"  maxBufferSize="1500000">
  <security mode="Transport">
      <transport clientCredentialType="None"

            proxyCredentialType="None"
            realm="string" />
  </security>
  </binding>

</webHttpBinding>
</bindings>
<services>

  <service name="PrimeStreamInfoServices.Service1" behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
    <!-- Service Endpoints -->
    <endpoint address="" binding="webHttpBinding" bindingConfiguration="webHttp" contract="PrimeStreamInfoServices.IService1">
      <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="PrimeStreamInfoServices.Service1Behavior">

      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<diagnostics>

  <messageLogging logMalformedMessages="true"  logMessagesAtServiceLevel="true"
    logMessagesAtTransportLevel="true" />

</diagnostics>

Mais quand je lance mon service que je reçois une exception: Impossible de trouver une adresse de base qui correspond à régime https pour le point final avec une liaison WebHttpBinding. schémas d'adresse de base sont enregistrés [http].

Je sais im manque quelque chose, et je l'ai essayé différentes choses que je ne peux pas comprendre, Quelqu'un at-il une entrée sur ce que je dois faire?

Était-ce utile?

La solution

Oui - passer à HTTPS, avec un certificat approprié. La sécurité des transports, dans le cas de HTTP est fourni par un canal SSL. Vous ne pouvez pas avoir WS * la sécurité des transports sur simple HTTPS

Autres conseils

Ignorer ma réponse précédente, je pensais WSHttpBinding pas webHttpBinding.

Il est l'adresse que vous utilisez pour appeler le service qui doit commencer par https.

https: // machineName / ServiceName

Pouvez-vous essayer d'ajouter une adresse de base (dans l'élément <host> de votre config de service) qui est https? Ajoutez-vous un (ou plusieurs) adresse de base (s) dans le code?

<service name="PrimeStreamInfoServices.Service1" 
         behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
   <host>
      <baseAddresses>
         <add baseAddress="https://localhost:8080/YourService.svc" />
      </baseAddresses>
   </host>
   <!-- Service Endpoints -->
   <endpoint ......
</service>

pas 100% sûr si cela fonctionne avec le webHttpBinding, mais donner un essai!

Marc

Rappelez-vous que plus de la configuration droite WCF, vous devez également configurer la propriété IIS pour activer SSL sur elle (y compris la mise du bon certificat X.509 pour SSL). docs ont des informations décent sur la façon de le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top