Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WCF WSDL Definition wird nur per https veröffentlicht
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

WCF WSDL Definition wird nur per https veröffentlicht

beantworten | zitieren | melden

Guten Tag,

ich habe einen WCF Service (gehostet auf einem IIS 10) und dieser stellt auch seine Metadaten mittels WSDL bereit.

<serviceBehaviors>
    <behavior name="serviceBehavior">
        <serviceMetadata httpsGetEnabled="true" httpGetEnabled="true" />
    </behavior>
</serviceBehaviors>

Die Security Settings für das basicHttpBinding sehen folgendermaßen aus:

<security mode="TransportWithMessageCredential">
    <message clientCredentialType="UserName" />
</security>

Mein Service hat folgenden Metadaten-Endpunkt konfiguriert:

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

Das funktioniert über https wunderbar!

Nun zum Problem:
Jetzt würde ich aber gerne nur http verwenden (also ohne SSL).

Also setze ich httpsGetEnabled="false" und die Security-Settings auf:

<security mode="TransportCredentialOnly">
    <message clientCredentialType="UserName" />
</security>

Ich habe gehofft, dass mir trotzdem noch der http Zugang zur WSDL Definition bleibt, nur leider ist dem nicht so. Unter "myService.svc?wsdl" finde ich dann plötzlich nichts mehr.

Hat jemand eine Ahnung warum dann plötzlich kein ?wsdl Aufruf mehr möglich ist, obwohl httpGetEnabled="true" gesetzt ist.

edit: Es wird dann plötzlich nur noch diese URL vorgeschlagen: "http://[servername]/myService.svc/mex"

Gruß
wax
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Wax am .
private Nachricht | Beiträge des Benutzers
emuuu
myCSharp.de - Member

Avatar #avatar-4078.jpg


Dabei seit:
Beiträge: 286

beantworten | zitieren | melden

Wie ist das ganze denn gehostet? Auf einem IIS?
2+2=5 (für extrem große Werte von 2)
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

beantworten | zitieren | melden

Sorry für die fehlende Information.
Ja es handelt sich um einen per IIS (10) gehosteten Service.

Gruß
wax
private Nachricht | Beiträge des Benutzers
emuuu
myCSharp.de - Member

Avatar #avatar-4078.jpg


Dabei seit:
Beiträge: 286

beantworten | zitieren | melden

Hast du im IIS für die Website ein http-Binding eingefügt? IIS interessiert sich nämlich zunächst nicht für deine web.config sondern möchte selber konfiguriert werden.

Hast du neben dem Metadaten-Endpoint auch den eigentlichen Service-Endpoint auf http geswitcht?

OT: Wieso von https zu http switchen? Immer wenn man die Möglichkeit zu https hat sollte man dieses bevorzugen.
2+2=5 (für extrem große Werte von 2)
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

beantworten | zitieren | melden

Eine http-Bindung wurde im IIS konfiguriert.
Der eigentliche Service-Endpoint verwendet binding="basicHttpBinding" und eine bindingConfiguration mit den http Security-Settings.


OT: Der Kunde will...


Gruß
wax
private Nachricht | Beiträge des Benutzers
emuuu
myCSharp.de - Member

Avatar #avatar-4078.jpg


Dabei seit:
Beiträge: 286

beantworten | zitieren | melden

Versuche mal den Service um einen Host zu erweitern:

<service behaviorConfiguration="serviceBehavior" name="FM.MyFancyService">
   <endpoint ... />
   <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
   <host>
       <baseAddresses>            
         <add baseAddress="http://[servername]/AppName/myService.svc"/>
      </baseAddresses>
   </host>
</service>


OT: Als Auftragnehmer muss man dem Kunden auch ausreden, wenn er etwas wirklich dummes machen will.

Beste Grüße
emuuu
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von emuuu am .
2+2=5 (für extrem große Werte von 2)
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

beantworten | zitieren | melden

Bringt leider keine Besserung.

Hier nochmal die Auszüge aus der web.config Datei:

<behaviors>
    <endpointBehaviors>
        <behavior name="webServiceEndpointBehavior">
            <AuthenticationBehaviorExtensionElement />
            <FluentValidationBehaviorExtensionElement />
        </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
        <behavior name="serviceBehavior">
            <serviceDebug includeExceptionDetailInFaults="true" />
            <serviceMetadata httpGetEnabled="true" />
        </behavior>
    </serviceBehaviors>
</behaviors>

<bindings>
    <basicHttpBinding>
        <binding name="http" textEncoding="utf-8">
            <security mode="TransportCredentialOnly">
                <message clientCredentialType="UserName" />
            </security>
        </binding>
    </basicHttpBinding>
</bindings>

<service name="FancyController" behaviorConfiguration="serviceBehavior">
    <endpoint name="fancy_httpEndpoint" behaviorConfiguration="webServiceEndpointBehavior" address="" binding="basicHttpBinding" bindingConfiguration="http" contract="IFancyControllerDTO" />
    <endpoint name="fancy_httpMetadataEndpoint" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
        <baseAddresses>
            <add baseAddress="http://localhost:8082/Controllers/FancyController.svc"/>
        </baseAddresses>
    </host>
</service>
private Nachricht | Beiträge des Benutzers