| |
ASP.NET, WebServices u. RemotingWCF, SSL und IIS7: Metadaten Problem | | | Autor: Maas | Datum: 30.10.11 09:28 |
| Hallo,
Ich stehe vor einem kleinen Problem mit meinem WCF Service, welchen ich über HTTPS anbieten will.
Da der Development-Testserver von VS kein HTTPS unterstützt, hoste ich den Service über IIS(7). Doch leider scheint es hier ein kleines Problem mit den Metadaten zu geben.
Ich habe also folgende web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true"
strict="false"
explicit="true"
targetFramework="4.0" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="myAuthenticationBindingConfiguration">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"></message>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="HttpsTestService.UserAuthenticationBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<serviceCertificate findValue="Maas-PC"
x509FindType="FindBySubjectName"
storeLocation="LocalMachine"
storeName="My"/>
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="Https" & _
"estService.UserAccountPasswordValidator," & _
"HttpsTestService"/>
<clientCertificate>
<authentication certificateValidationMode="PeerOrChainTrust"/>
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service _
behaviorConfiguration="HttpsTestService.UserAuthenticationBehavior"
name="HttpsTestService.Service1">
<host>
<baseAddresses>
<add baseAddress="https://localhost/HttpsTestService/"/>
</baseAddresses>
</host>
<endpoint address=""
binding="basicHttpBinding"
contract="HttpsTestService.IService1"
bindingConfiguration="myAuthenticationBindingConfiguration"/>
<endpoint address="mex"
binding="mexHttpsBinding"
contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration> Dann habe ich noch ein Virtuelles Verzeichnis in IIS erstellen lassen (unter Default Site), ein Self-Signed-Certificate zum Testen erstellt und die Bindungen der Site um HTTPS erweitert.
Wenn ich nun den Service im Browser aufrufe (https://localhost/HttpsTestService/Service1.svc) läuft erst mal alles. Wenn ich aber nun die Service Reference im Client zuweise, kommt folgender Fehler:
Metadaten enthalten einen Verweis, der nicht aufgelöst werden kann: _
"https://localhost/HttpsTestService/Service1.svc?wsdl".
Das WSDL-Dokument enthält Links, die nicht aufgelöst werden konnten.
Fehler beim Downloaden von _
'https://localhost/HttpsTestService/Service1.svc?xsd=xsd0'.
Die zugrunde liegende Verbindung wurde geschlossen: Unbekannter Fehler beim _
Empfangen..
Von der Übertragungsverbindung können keine Daten gelesen werden: Eine _
vorhandene Verbindung wurde vom Remotehost geschlossen.
Eine vorhandene Verbindung wurde vom Remotehost geschlossen
Metadaten enthalten einen Verweis, der nicht aufgelöst werden kann: _
"https://localhost/HttpsTestService/Service1.svc".
Der Inhaltstyp "application/soap+xml; charset=utf-8" wurde von Dienst _
"https://localhost/HttpsTestService/Service1.svc" nicht unterstützt. _
Möglicherweise stimmen Client- und Dienstbindungen nicht überein.
Der Remoteserver hat einen Fehler zurückgegeben: (415) Cannot process the _
message because the content type 'application/soap+xml; charset=utf-8' was not _
the expected type 'text/xml; charset=utf-8'..
Wenn der Dienst in der aktuellen Projektmappe definiert ist, erstellen Sie die _
Projektmappe, und fügen Sie den Dienstverweis erneut hinzu. Ich weiß wirklich nicht mehr weiter. Wo liegt der Fehler?
Vielen Dank im Voraus.
Maas
Edit: wsHttpBinding ist in diesem Fall nicht möglich da ich den Service auch mit Silverlight benutzen will.
Beitrag wurde zuletzt am 30.10.11 um 09:29:22 editiert. | |
Re: WCF, SSL und IIS7: Metadaten Problem | | | Autor: Maas | Datum: 30.10.11 19:27 |
| <ServiceContract()>
Public Interface IService1
<OperationContract()>
Function GetData(ByVal value As Integer) As String
End Interface Minimal zum Testen eben.
httpsGetEnabled="true" habe ich deklariert, da sonst folgender Fehler kommt:
Der Vertragsname "IMetadataExchange" wurde nicht in der Liste der Verträge _
gefunden, die vom Dienst Service1 implementiert wurden. Fügen Sie der _
Konfigurationsdatei oder dem ServiceHost direkt ein ServiceMetadataBehavior _
hinzu, um die Unterstützung für diesen Vertrag zu ermöglichen. Ich hatte nochmal ein bisschen gegoogelt und bin darauf gestoßen, dass es etwas mit basicHttpBinding zu tun hat. Anscheinend benutzt basicHttpBinding SOAP1.1 und wsHttpBinding SOAP1.2. Ich hatte es dann mit einem CustomBinding probiert, aber da fehlen mir einfach die Grundlagen.
Wie würdest du denn einen WCF-Service konfigurieren, der über HTTPS (oder einfach generell gesichert, wegen der Benutzer Authentifizierung) läuft und für Silverlight zur Verfügung steht?
Maas | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|