3 Stimmen

WCF und IIS 6 - WSDL wird nicht angezeigt

Ich habe eine ASP.NET-Anwendung entwickelt, die einen WCF-Dienst enthält. Dieser Dienst muss von Anwendungen von Drittanbietern genutzt werden. Dieser Dienst hat beim Testen in meiner Entwicklungsumgebung gut funktioniert. Meine Entwicklungsumgebung verwendet IIS 7.0 unter Windows 7 RC 1. Ich kann den Dienst jedoch nicht verwenden, sobald er sich in meiner Staging-/Produktionsumgebung befindet. Bei meiner Staging-/Produktionsumgebung handelt es sich um eine Windows Server 2003, IIS 6-Umgebung.

Wenn ich versuche, den Dienst zu referenzieren, wenn er sich in der IIS 6-Umgebung befindet, erhalte ich einen Fehler, der besagt

Fehler: Metadaten können nicht abgerufen werden ...

Interessant ist, dass ich in meinen Test- und Produktionsumgebungen einen feinen, aber meiner Meinung nach wichtigen Unterschied festgestellt habe.

In meiner Testumgebung habe ich festgestellt, dass ich die Service-Seite über eine URL mit der folgenden Vorlage aufrufen kann:

http://localhost/MyApp/services/myService.svc

Ich habe auch festgestellt, dass ich in meiner Testumgebung die WSDL-Informationen sehen kann, wenn ich eine URL mit der folgenden Vorlage aufrufe:

http://localhost/MyApp/services/myService.svc?wsdl

In meiner Staging-/Produktionsumgebung kann ich die WSDL-Informationen jedoch nicht sehen. Seltsamerweise kann ich aber die Service-Seite sehen.

Hier sind die Konfigurationseinstellungen für meine Dienste in meiner Produktionsumgebung.

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="myServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>

  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
  <services>
    <service behaviorConfiguration="myServiceBehavior" name="myService">
      <endpoint address="" binding="basicHttpBinding" contract="myService" />
      <endpoint address="mex" binding="mexHttpBinding" 
        contract="IMetadataExchange" />
    </service>
  </services>
</system.serviceModel>

Warum kann ich in der Windows Server 2003 IIS 6.0-Umgebung zwar die Service-Seite, nicht aber die WSDL-Seite sehen?

Ich danke Ihnen!

2voto

Shiraz Bhaiji Punkte 62129

Haben Sie den Austausch von Metadaten aktiviert?

    <serviceMetadata httpGetEnabled = "true"/>

Haben Sie den Endpunkt für den Austausch von Metadaten definiert?

    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration=""
      name="mexendpoint" contract="IMetadataExchange" />

1voto

Kev Punkte 115293

Zur Ergänzung von Shiraz' Antwort, der folgende MSDN-Artikel behandelt die Veröffentlichung von Dienstmetadaten in angemessenem Detail:

Veröffentlichung von Metadaten-Endpunkten (MSDN Library)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X