WCF-Bindung auf HTTPS
Ich verstehe, dass es gibt viele Beiträge dazu, und ich habe durch Sie alle, kam auf meine Suche und realisiert alles, was erwähnt wurde. Ich habe einen WCF-service, der funktioniert auf meinem lokalen system auf HTTP, und es funktionierte auf dem server, auf HTTP. Aber der Kunde verlangt, dass dies funktioniert über HTTPS. Der miriad-Beiträge auf dieser und anderen Seiten zeigt mir, dass es nicht so geradlinig, wie es sein sollte, da vor dieser, die die ASMX-web-service "einfach funktioniert" und nicht brauchen, komplizierte Konfiguration.
Bin ich immer den folgenden Fehler mit meiner aktuellen Konfiguration:
Konnte nicht finden, eine Basisadresse entspricht Schema von https für die
Endpunkt mit binding WSHttpBinding. Eingetragene Basisadresse Systeme
[http].
Hier ist mein code ab diesem moment, nachdem er versucht seit Tagen zu konfigurieren, dies funktioniert ohne Erfolg:
<system.serviceModel>
<!-- -->
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" >
<baseAddressPrefixFilters>
<add prefix="https://mysite.com"/>
<add prefix="http://mysite.com"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<!-- Set up Custom Behaviors -->
<behaviors>
<endpointBehaviors>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="WebPostService.WebPostServiceBehavior">
<serviceMetadata httpsGetEnabled="true" httpsGetUrl="WebPostServices.svc/mex" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<!-- Set up the binding configuration -->
<bindings>
<wsHttpBinding>
<binding name="SOAPBinding"
>
<security mode="Transport">
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service
behaviorConfiguration="WebPostService.WebPostServiceBehavior"
name="WebPostService.WebPostService"
>
<host>
<baseAddresses>
<add baseAddress="https://mysite.com/Services/WebPostService.svc"/>
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="SOAPBinding"
contract="WebPostService.IWebPostService"
>
<identity>
<dns value="mysite.com" />
</identity>
</endpoint>
<endpoint
address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange"
>
</endpoint>
</service>
</services>
</system.serviceModel>
Was mache ich falsch und wie bekomme ich diese zu arbeiten, die über HTTPS? Ich bin frustriert, dass das nicht so einfach, wie es sein sollte. Ich wurde begraben in der WCF-Dokumentation auf MSDN für die Monate der Arbeit an diesem Projekt, und haben ein gutes Verständnis der Dienste, Endpunkte und bindings --- genug, um frustriert mich noch mehr, als wenn ich hatte überhaupt keine Erkenntnis.
UPDATE: Noch auf Arbeit, hatte ich eine seltsame Fehlermeldung, wenn Sie versuchen, um den vollständigen URL für die mex-Adresse. Ich geändert, um dies:
address="https://prcwebs.com/Services/WebPostService.svc/mex"
und bekam die Fehlermeldung:
Sicherheitseinstellungen für diesen Dienst erfordern die Windows-Authentifizierung aber
es ist nicht aktiviert für die IIS-Anwendung hostet diesen service.
Ich versuche nicht, die Windows-Authentifizierung verwenden, werden die Sicherheitseinstellungen nicht verändert und ist noch
<security mode="Transport" />
Konnte nicht finden, eine Basisadresse entspricht Schema https für den Endpunkt mit WebHttpBinding-Bindung. Eingetragene Basisadresse Systeme sind [http]
- war nicht hilfreich, nichts erwähnt, dass würde helfen
Konnte nicht finden, eine Basisadresse entspricht Schema http für den Endpunkt mit binding WSHttpBinding
- Ich bin mit Sicherheit bei transport, gilt dies nicht. versucht, die änderung zu verschiedene Sicherheits-Modi, noch nicht bekommen konnte-site zu arbeiten.
InformationsquelleAutor der Frage stephenbayer | 2013-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die falschen Bindungen für HTTPS.
Gibt es zwei getrennte Klassen verbindlich. wsHttpBinding und wsHttpsBinding beachten Sie die en.
Benötigen Sie ein wsHttpsBinding für HTTPS-unter-Bindungen, und Sie müssen einen neuen Endpunkt für diese Bindung.
Auch die einzelnen Fehler, die Sie sehen in der Regel bekomme ich zu sehen wenn IIS noch nicht setup für https von diesem Ort aus.
InformationsquelleAutor der Antwort Aron
Hinzufügen
multipleSiteBindingsEnabled="true"
zu denserviceHostingEnvironment
und aktualisieren Sie die Sicherheit deaktivieren der client-Anmeldeinformationen:BEARBEITEN
Meine Letzte funktionierende version unter windows 2003 wurde mit der folgenden config.
Können Sie auf die website mit https, also denke ich das Zertifikat Teil der installation ist korrekt. Wenn Sie haben, was Sie wollen, zu vergleichen mit meinem setup, lass es mich wissen.
InformationsquelleAutor der Antwort Luuk
Ich verwendet und es funktionierte für mich, vielleicht kann es Ihnen helfen,
Aktivieren von Https auf WCF-WsHttp Bindungen, gibt es einige einfache Schritte, die geändert werden sollten, im web.config-Datei.
Diese Schritte sind:
Ermöglichen transport level security im web.config-Datei des service:
In diesem Schritt müssen Sie zum ändern der Sicherheits-Modus von "keine" zu Transportieren. Der code unten zeigt, wie Sie es tun können:
Binden, die Bindung und geben Sie die HTTPS-Konfiguration
Müssen Sie nun ordnen Sie die Bindungen, die Vorschau Schritt, mit dem Ende Punkten. verwenden Sie die bindingConfiguration tag um die Bindung name. Sie müssen auch die Adresse angegeben, wo der Dienst gehostet wird. Der code unten zeigt, wie Sie es tun können,
.
Sie müssen auch zu ändern httpGetEnabled zu httpsGetEnabled in der serviceMetaData. Der code unten zeigt, wie können Sie es:
Hoffe, es half
InformationsquelleAutor der Antwort Youssef
Ich habe deine genaue Konfiguration in 3.5 Einstellung und es funktioniert mit
Transport
- Modus mitclientCredentialType="None"
wie unten erwähnt in Luuk ' s Antwort. Aber nur um sicher zu sein, ging ich vor eine erstellt ein Beispiel-Projekt, um zu simulieren, wie viel von Ihrer Umgebung als könnte ich aus dem sammeln von Informationen hier.Zur Simulation Ihrer Umgebung, die ich mein IIS (7.5) die Verwendung von standard -
Asp.Net 2.0 Integrated
app-pool. Ich Hinzugefügt 3 http-Bindungen und 3 https-Bindungen, um zu simulieren, Ihre "kann nur eine Adresse pro Schema Problem" undbaseAddressPrefixFilters
funktioniert.Ich habe nur ein suchen und ersetzen auf
mysite.com
zulocalhost
. Unten ist das kopieren und einfügen der genauen Konfiguration, die ich verwendet, um zu produzieren, screenshot:web.config
Hier ist das Ergebnis:
Werden Sie feststellen, dass
WebPostService.svc
wird zweimal inmex
vollständige url. Sie brauchen, um drop -httpsGetUrl
nurmex
stattWebPostService.svc/mex
(oder legen Sie es zusammen, und es funktioniert immer noch gut auf meiner Seite)Wenn Sie möchten, dies zu diskutieren, oder was könnte der Unterschied zwischen unserem envinronments neben IIS-version, ich bin in der WPF-chat-Raum fast den ganzen Tag (weitere 5-6 Stunden).
InformationsquelleAutor der Antwort Maverik