vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ASP.NET, WebServices u. Remoting
WCF, 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: WCF, SSL und IIS7: Metadaten Problem 
Autor: ModeratorRalfE (Moderator)
Datum: 30.10.11 18:38

Was mich erstmal wundert: In den Service Behaviors definierst du HTTP-Get = True (spricht für einen REST-Service), du willst aber anscheinend einen SOAP-Service Nutzen (denn nur da brauchst du ein WSDL-Dokument).

Kannst du die Definition des Interfaces posten?

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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