Ich versuche, einen WCF-Dienst über basicHttpBinding zu erstellen, der über https verwendet werden soll. Hier ist meine web.config:
<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
name="MyServices.PingResultService">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="defaultBasicHttpBinding"
contract="MyServices.IPingResultService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
...
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
...
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.UpdateServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Ich verbinde mich mit WCFStorm, das alle Metadaten ordnungsgemäß abrufen kann, aber wenn ich die eigentliche Methode aufrufe, erhalte ich:
Das angegebene URI-Schema 'https' ist ungültig. erwartet 'http'. Parametername: via
Antworten:
Fügen Sie Ihrer app.config folgende Anmeldeinformationen hinzu:
quelle
Fügen Sie dies als Antwort hinzu, nur weil Sie in Kommentaren nicht viel Lust auf Formatierung haben.
Ich hatte das gleiche Problem, außer dass ich meinen Webdienst-Client vollständig in Code erstellt und gebunden habe.
Grund dafür ist, dass die DLL in ein System hochgeladen wurde, das die Verwendung von Konfigurationsdateien untersagte.
Hier ist der Code, der aktualisiert werden musste, um über SSL zu kommunizieren ...
quelle
Wechsel von
zu
in Ihrer web.config-Datei. Mit dieser Änderung können Sie https anstelle von http verwenden
quelle
Führen Sie dies auf dem Cassini (vs dev server) oder auf IIS mit installiertem Zertifikat aus? Ich hatte in der Vergangenheit Probleme beim Versuch, sichere Endpunkte auf dem Dev-Webserver anzuschließen.
Hier ist die Bindungskonfiguration, die in der Vergangenheit für mich funktioniert hat. Stattdessen
basicHttpBinding
wird verwendetwsHttpBinding
. Ich weiß nicht, ob das ein Problem für Sie ist.und der Endpunkt
Stellen Sie außerdem sicher, dass Sie die Clientkonfiguration ändern, um die Transportsicherheit zu aktivieren.
quelle
Ich hatte die gleiche Ausnahme in einem
custom binding
Szenario. Jeder, der diesen Ansatz verwendet, kann dies ebenfalls überprüfen.Ich habe tatsächlich die Dienstreferenz aus einer
local WSDL
Datei hinzugefügt . Es wurde erfolgreich hinzugefügt und die erforderliche benutzerdefinierte Bindung wurde zur Konfigurationsdatei hinzugefügt. Der eigentliche Dienst war jedoch https; nicht http. Also habe ich das httpTransport-Element als geänderthttpsTransport
. Dies hat das Problem behobenVerweise
quelle
Ich hatte genau das gleiche Problem wie das OP. Meine Konfiguration und Situation waren identisch. Ich habe es schließlich auf ein Problem in WCFStorm eingegrenzt, nachdem ich in einem Testprojekt in Visual Studio eine Dienstreferenz erstellt und bestätigt hatte, dass der Dienst funktioniert. In Storm müssen Sie auf die Einstellungsoption "Config" klicken (NICHT DIE "Client Config"). Nachdem Sie darauf geklickt haben, klicken Sie im daraufhin angezeigten Dialogfeld auf die Registerkarte "Sicherheit". Stellen Sie sicher, dass "Authentifizierungstyp" auf "Keine" eingestellt ist (die Standardeinstellung ist "Windows-Authentifizierung"). Presto, es funktioniert! Ich teste meine Methoden immer in WCFStorm, während ich sie ausbaue, habe aber nie versucht, eine Verbindung zu einer Methode herzustellen, die bereits über SSL eingerichtet wurde. Hoffe das hilft jemandem!
quelle
Ich bin auf dasselbe Problem gestoßen, so stellte sich meine Lösung am Ende heraus:
Ich habe im Grunde jedes Vorkommen von HTTP durch HTTP ersetzt. Sie können versuchen, beide hinzuzufügen, wenn Sie dies bevorzugen.
quelle
Wenn Sie dies programmgesteuert und nicht in web.config tun, gilt Folgendes:
quelle
Es ist gut daran zu denken, dass Konfigurationsdateien auf sekundäre Dateien aufgeteilt werden können, um Konfigurationsänderungen auf verschiedenen Servern (dev / demo / Production usw.) zu vereinfachen, ohne dass Code / App usw. neu kompiliert werden müssen. Zum Beispiel verwenden wir sie, um Ingenieuren vor Ort dies zu ermöglichen Nehmen Sie Endpunktänderungen vor, ohne die "echten" Dateien zu berühren.
Der erste Schritt besteht darin, den Bindungsabschnitt aus der WPF App.Config in eine eigene separate Datei zu verschieben.
Der Abschnitt "Verhalten" ist so eingestellt, dass sowohl http als auch https zulässig sind (scheint keine Auswirkungen auf die App zu haben, wenn beide zulässig sind).
Und wir verschieben den Bindungsabschnitt in eine eigene Datei.
In der Datei bindings.config wechseln wir die Sicherheit basierend auf dem Protokoll
Jetzt müssen die Ingenieure vor Ort nur noch die Datei Bindings.Config und die Datei Client.Config ändern, in der wir die tatsächliche URL für jeden Endpunkt speichern.
Auf diese Weise können wir den Endpunkt von http in https und wieder zurück ändern, um die App zu testen, ohne Code ändern zu müssen.
Hoffe das hilft.
quelle
So schließen Sie die Frage im OP erneut ab:
In den WCFStorm-Lernprogrammen wird dieses Problem unter Arbeiten mit IIS und SSL behandelt .
Ihre Lösung hat bei mir funktioniert:
Das letzte Aufzählungszeichen von Element (1) bedeutet , dass das Namespace-Präfix , das VS dem Endpunktvertragsattribut voranstellt, standardmäßig "ServiceReference1" entfernt wird.
In der app.config, die Sie für ListsService in WCFStorm laden möchten:
quelle
Ich brauchte die folgenden Bindungen, um meine zum Arbeiten zu bringen:
quelle
wsHttpBinding ist ein Problem, da Silverlight es nicht unterstützt!
quelle