locked
[WCF4] BindingNamespace und Flat WSDL RRS feed

  • Frage

  • Ich versuche einen WCF Dienst zu erzeugen, der als WSDL nur eine einzige Datei ausgibt (Flat WSDL). Außerdem möchte ich natürlich einen anderen Namespace als tempuri.org verwenden.Basis ist WCF 4.

    Den Namespace bei ServiceContract und ServiceBehaviour habe ich gesetzt. Bleibt noch der BindingNamespace beim Endpunkt. Das Problem: Ich habe aktuell noch gar keinen Endpunkt explizit deklariert. Ich verwnde den von WCF 4 per default erzeugten Endpunkt. Wie kann ich für diesen den Namespace ändern?

    Zum zweiten Thema nämlich dem WSDL ohne Importe führen alle Suchanfragen zu FlatWSDL von Christian Weyer. Das ist allerdings von 2007 und damit logischweise auch kein .NET 4. Daher stellt sich mir die Frag ob es in WCF 4 vielleicht einen "einfacheren" Weg gibt. Alternativ könnte mir ggf. auch jemand auf die Sprünge helfen wie ich FlatWSDL zusammen mit meinem WCF 4 Dienst zum Laufen kriege.

    Der Dienst wird innerhalb des IIS gehostet werden.

     

    Vielen Dank im Voraus.

    Donnerstag, 23. September 2010 15:50

Antworten

Alle Antworten

  • Hallo Markus,

    Du könntest vielleicht WCFExtras dazu verwenden:

    Single WSDL file: This extensions simply merges the external types into the wsdl file and produces a single flat wsdl file that contains all the definitions it needs.

    WCFExtras:
    http://wcfextras.codeplex.com/

    Auch interessant:
    http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/5207ed33-8812-4d42-9439-c4246f07c465

    Gruß
    Marcel

    Freitag, 24. September 2010 07:36
  • Mit Hilfe von WCFExtras bekomme ich jetzt ein Flat WSDL vorausgesetzt alle Namespaces innerhalb des Services sind gleich (logisch). Ich habe das Behaviour jetzt einfach beim Standard-Endpunkt-Behaviour eingefügt. Schaut dann so aus:

     <extensions>
       <behaviorExtensions>
        <add name="wsdlExtensions" type="WCFExtras.Wsdl.WsdlExtensionsConfig, WCFExtras, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
       </behaviorExtensions>
      </extensions>
    
    
      <behaviors>
       
       <endpointBehaviors>
        <behavior>     
         <wsdlExtensions singleFile="true"/>
        </behavior>
       </endpointBehaviors>
    
    
      </behaviors>

     

    Bleibt das Problem wie ich den Namespace für das Binding angeben kann, wenn ich die Default-Endpoints nutzen möchte. Aktuelle Antwort scheint "Geht (noch) nicht" zu sein: https://connect.microsoft.com/wcf/feedback/details/583163/endpoint-bindingnamespace?wa=wsignin1.0#tabs

     

    Und für alle, die den Wald vor lauter Bäumen nicht sehen - wie ich die letzten Stunden: Ein Endpunkt wird nur dann in das WSDL aufgenommen, wenn er ein adress Attribut hat. Ohne kann man einstellen was man will, wird ignoriert.

    Montag, 27. September 2010 09:46