wake-up-neo.com

WCF-Ausnahme: Es wurde keine Basisadresse gefunden, die dem Schema http für den Endpunkt entspricht

Ich versuche, einen WCF-Webdienst auf einer separaten Website in IIS mit https bei 443 als einzige Bindung zu hosten. 

Die folgenden Konfigurationen funktionieren gut, wenn ich sie auf einer Website verwende, die beide Bindungen verwendet (http (80)/https (443)). Wenn ich die http-Bindung entferne, wird der folgende Fehler ausgegeben.

Konnte keine Basisadresse finden, die dem Schema http für den Endpunkt mit der Bindung von BasicHttpBinding entspricht. Registrierte Basisadressenschemas sind [https].

Wie kann ich es auf einer IIS - Website nur mit https-Bindung funktionieren lassen?

  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="defaultBasicHttpBinding">
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
            <message clientCredentialType="Certificate" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost/ERPService/retailPayment.svc"
                binding="basicHttpBinding" bindingConfiguration="defaultBasicHttpBinding"
                contract="RetailPaymentService.RetailPayment.SVRetailPaymentService" name="EnterpriseRetailPayment" />
    </client>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
        <behavior>
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="MyEndPointBehavior">
          <!--<SchemaValidator enabled="true"/>-->
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="SettlementSalesCollection.SaleItemService" behaviorConfiguration="MyServiceTypeBehaviors">
        <endpoint behaviorConfiguration="MyEndPointBehavior" binding="basicHttpBinding"
                  name="SettlementSalesCollection"
                  contract="SettlementSalesCollection.CITransactionSettlementListenerService" />
        <endpoint name="mexEndpoint" contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
      </service>
    </services>
    <extensions>
      <behaviorExtensions>
        <add name="SchemaValidator"
             type="SettlementSalesCollection.SchemaValidation.SchemaValidationBehavior+CustomBehaviorSection, SettlementSalesCollectionService, Version=1.0.0.0, Culture=neutral" />
      </behaviorExtensions>
    </extensions>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
18
KManohar

Ihre Konfiguration sollte ähnlich aussehen. Abhängig von Ihren Authentifizierungsanforderungen müssen Sie möglicherweise <transport clientCredentialType="None" proxyCredentialType="None" /> ändern. Die folgende Konfiguration erfordert keine Authentifizierung.

<bindings>
    <basicHttpBinding>
        <binding name="basicHttpBindingConfiguration">
            <security mode="Transport">
                <transport clientCredentialType="None" proxyCredentialType="None" />
            </security>
        </binding>       
    </basicHttpBinding>
</bindings>

<services>
    <service name="XXX">
        <endpoint
            name="AAA"
            address=""
            binding="basicHttpBinding"
            bindingConfiguration="basicHttpBindingConfiguration"
            contract="YourContract" />
    </service>
<services>

Damit kann ein WCF-Dienst mit basicHttpBinding HTTPS verwenden.

18
Szymon

Mein Problem wurde durch fehlende Bindungen in IIS verursacht: Klicken Sie mit der rechten Maustaste auf Website> Bindungen bearbeiten> Hinzufügen> https

Wählen Sie "IIS Express Development Certificate" und setzen Sie den Port auf 443 Dann fügte ich der Webconfig eine weitere Bindung hinzu:

<endpoint address="wsHttps" binding="wsHttpBinding" bindingConfiguration="DefaultWsHttpBinding" name="Your.bindingname" contract="Your.contract" />

Zu serviceBehaviours hinzugefügt: <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />

Und schließlich hat es funktioniert, keine der Lösungen, die ich für stackoverflow auf diesen Fehler geprüft habe, war auf mein spezifisches Szenario anwendbar, also hier, falls es anderen hilft

8
JsonW

Sie erhalten dies, wenn Sie NUR https als Site-Bindung in IIS konfigurieren. 

Sie müssen sowohl http(80) als auch https(443) hinzufügen - zumindest habe ich :-)

6
Simon_Weaver

Ich habe die Bindung laut Antwort von @Szymon ausprobiert, aber es hat bei mir nicht funktioniert. Ich habe basicHttpsBinding ausprobiert, was in .net 4.5 neu ist. Hier ist die vollständige Konfiguration, die für mich funktioniert. 

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false" />
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpsBinding>
        <binding name="basicHttpsBindingForYourService">
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None"/>
          </security>
        </binding>
      </basicHttpsBinding>
    </bindings>
    <services>
      <service name="YourServiceName">
        <endpoint address="" binding="basicHttpsBinding" bindingName="basicHttpsBindingForYourService" contract="YourContract" />
      </service>
    </services>   
</system.serviceModel>

Zu Ihrer Information: Mein Zielrahmen für meine Anwendung ist 4.5.1. IIS Website, die ich nur für die Bereitstellung dieses WCF-Diensts erstellt habe, hat die https-Bindung aktiviert.

2
A P

Mein Problem wurde auch durch die fehlende https-Bindung in IIS verursacht: Ausgewählte Standardwebsite> Ganz rechts im Bereich "Bindungen"> "Hinzufügen"> "https"

Wählen Sie "IIS Express Development Certificate" und setzen Sie den Port auf 443

1
Mandi

In meinem Fall stimmte der Bindungsname in unter Protokollzuordnung nicht mit dem Bindungsnamen auf dem Endpunkt überein. Sie stimmen im unten stehenden Beispiel überein.

<endpoint address="" binding="basicHttpsBinding" contract="serviceName" />

und

    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
0
housten

In meinem Fall wurde das Problem behoben

  1. Gehen Sie zu den Projekteigenschaften, indem Sie auf F4 im Projektnamen klicken
  2. Setzen Sie SSLEnabled = true

Bild mit den Projekteigenschaften

0
Ketaki More

Öffnen Sie IIS und klicken Sie mit der rechten Maustaste auf Default App Pool und Add Binding, damit die Anwendung mit dem HTTPS-Protokoll funktioniert.

typ: https

IP-Adresse: Alle nicht zugewiesen

hafennummer: 443

SSL-Zertifikat: WMSVC

dann

Klicken Sie auf und starten Sie IIS neu

Erledigt

0