Wie konfiguriere ich einen einzelnen WCF-Dienst für mehrere HTTP- und HTTPS-Endpunkte?

Ich versuche, einen SINGLE WCF-Dienst für die Entwicklungsumgebung (HTTP-Schema) und den SAME-Dienst für die Produktionsumgebung (HTTPS-Schema) zur Verfügung zu stellen. Wenn ich die beiden Https-Endpunkte (die mit dem Suffix "Https" versehenen) entferne, funktioniert dies in der Entwicklungsumgebung. Ebenso funktioniert es in der Produktionsumgebung, wenn ich nur die zwei HTTP-Endpunkte entferne. Ich möchte, wenn möglich, alle vier Endpunkte in der web.config haben.

Meine Endpunkte sind unten definiert:

<endpoint address="/Web" 
        behaviorConfiguration="AjaxBehavior"
        binding="wsHttpBinding" 
        bindingConfiguration="web" 
        name="Web"
        contract="Service" />
<endpoint address="/Custom"
        binding="customBinding" 
        bindingConfiguration="custom" 
        name="Custom"   
        contract="Service" />
<endpoint 
        address="/WebHttps" 
        behaviorConfiguration="AjaxBehavior"
        binding="wsHttpBinding" 
        bindingConfiguration="webHttps" 
        name="WebHttps"
        contract="Service" />
<endpoint address="/CustomHttps"
        binding="customBinding" 
        bindingConfiguration="customHttps" 
        name="CustomHttps" 
        contract="Service" />

Bearbeitet: Ich bearbeite meine Frage, um den Fehler und die Bindungsabschnitte (unten) hinzuzufügen. Entschuldigung für die neue Länge der Frage.

Der Fehler lautet: "Es konnte keine Basisadresse gefunden werden, die dem Schema http für den Endpunkt mit der Bindung WebHttpBinding entspricht. Registrierte Basisadressschemata sind [https]."

Zusätzlich ist der Produktionsstandort auf "SSL erforderlich" eingestellt. Das kann man nicht ändern.

Die Bindungskonfigurationen sind:

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"  />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="AjaxBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>
</behaviors>

<bindings>
  <customBinding>
    <binding name="custom">
      <textMessageEncoding>
        <readerQuotas maxDepth="7000000" maxStringContentLength="7000000"
            maxArrayLength="7000000" maxBytesPerRead="7000000"
            maxNameTableCharCount="7000000" />
      </textMessageEncoding>

      <httpTransport maxBufferPoolSize="7000000" maxReceivedMessageSize="7000000"
          maxBufferSize="7000000" />
    </binding>
    <binding name="customHttps">
      <textMessageEncoding>
        <readerQuotas maxDepth="7000000" maxStringContentLength="7000000"
            maxArrayLength="7000000" maxBytesPerRead="7000000"
                  maxNameTableCharCount="7000000" />
      </textMessageEncoding>

      <httpsTransport maxBufferPoolSize="7000000" maxReceivedMessageSize="7000000"
          maxBufferSize="7000000" />

    </binding>
  </customBinding>

  <webHttpBinding>
    <binding name="web"  maxBufferPoolSize="70000000"
        maxReceivedMessageSize="70000000">
      <readerQuotas maxDepth="70000000" maxStringContentLength="70000000"
          maxArrayLength="70000000" maxBytesPerRead="70000000"
          maxNameTableCharCount="70000000" />
      <security mode="None" />
    </binding>

    <binding name="webHttps" maxBufferPoolSize="70000000"
        maxReceivedMessageSize="70000000">

      <readerQuotas maxDepth="70000000" maxStringContentLength="70000000"
                maxArrayLength="70000000" maxBytesPerRead="70000000"
                maxNameTableCharCount="70000000" />

      <security mode="Transport" />
    </binding>
  </webHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

Irgendwelche Ideen

Antworten auf die Frage(10)

Ihre Antwort auf die Frage