Announcement

Collapse
No announcement yet.

Webservice mit Konsolenausgabe hosten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Webservice mit Konsolenausgabe hosten

    Hallo,

    ich möchte einen Webservice hosten und die ablaufenden Events mit Hilfe einer Konsole nachvollziehen können. Der Webservice läuft problemlos.

    Was muss ich tun, um den Webservice so zu hosten, dass ich die Events nachvollziehen kann? Kennt jemand ein gutes Tutorial?


    Hintergrund:
    Ich habe mit der Windows Workflow Foundation mehrere Workflows erstellt. Diese sind jeweils mit der WebServiceInput und WebServiceOutput-Methode umschlossen. Ich kann den Workflow "normal" mit einem Workflow-Server inkl. Konsole hosten, dann stehen die Workflows aber nicht als Webservice zur Verfügung (oder ich weiß nicht, wie das geht). Jetzt habe ich die Workflows als Webservice exportiert und sehe nicht mehr, was gerade passiert.

    Für Hinweise und Anregungen bin ich dankbar.

  • #2
    Ich glaube, ich habe hier einen passenden Ansatz gefunden, bin aber trotzdem für konstruktivere/elegantere Vorschläge offen.

    Comment


    • #3
      Hallo,

      ich möchte einen Webservice hosten
      Der WS kann per WCF (mit Basic-HTTP-Bindung) erstellt werden und dann ident zu einem WS verwendet werden. Mit WCF kann der ServiceHost auch eine Konsolenanwendung (wie in den bisherigen Beispielen).

      die ablaufenden Events mit Hilfe einer Konsole nachvollziehen können.
      Für diesen Zweck wird i.d.R. Tracing verwendet. Gibts bei .net eingebaut (System.Diagnostics.TraceXXX) oder als Fremdkomponente wie zB log4net.


      mfG Gü
      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

      Comment


      • #4
        Ich habe die Idee mit den Webservices verworfen und hoste die Workflows jetzt als WCF-Dienste. Das "Problem" mit der Nachvollziehbarkeit der Aktivitäten bleibt, auch wenn ich nun eine Konsolenausgabe habe.


        @gfoidl: Danke für den Tracing-Hinweis. Hast du mit der in .NET integrierten Variante gute Erfahrungen gemacht? Aus der JAVA-Welt kenne ich Log4J - da konnte man die Meldungen mit Angabe einer Kategorie über das Netzwerk verschicken. Geht das mit der Diagnostics-Klasse auch?

        Hast du einen Link für ein verständliches Tutorial mit Substanz zur Hand? Ich würde mir sonst dieses hier zu Gemüte führen.

        Comment


        • #5
          Hast du mit der in .NET integrierten Variante gute Erfahrungen gemacht?
          Ja.

          da konnte man die Meldungen mit Angabe einer Kategorie über das Netzwerk verschicken.
          Kommt darauf an wer der Empfänger am anderen Ende ist

          Hast du einen Link für ein verständliches Tutorial mit Substanz zur Hand?
          A Tracing Primer - Part I (+ die anderen Teile).


          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            Es wurde kein Endpunkt gefunden

            Da mein IIS zerstört wurde(siehe hier), muss ich meine Webdienste nun selber hosten. Dazu wollte ich das Beispiel von MSDN (Link) verwenden.

            Wie von gfoidl empfohlen habe ich einen WCF-Service erzeugt und lasse diesen nun als WebService hosten.

            Fehlermeldungen beim Ausführen erhalte ich keine. Gebe ich die Adresse jedoch in meinen Browser ein, so erhalte ich die Hinweismeldung "Es wurde kein Endpunkt gefunden."

            Beim Hinzufügen meines Webservices als Webverweis erhalte ich zusätzlich noch die folgende Information vom Assistenten:
            Fehler beim Downloaden von 'http://localhost:8731/Flugbuchung'.
            Fehler bei der Anforderung mit HTTP-Status 404: Not Found.
            Fehler beim Herunterladen von "http://localhost:8731/Flugbuchung/$metadata".
            Fehler bei der Anfrage. HTTP-Status 404: Not Found.
            Hier die App.Config - Datei des WebServices.

            [highlight=xml]<?xml version="1.0" encoding="utf-8" ?>
            <configuration>
            <system.serviceModel>
            <behaviors>
            <serviceBehaviors>
            <behavior name="UrbanAirlineWebservice.UrbanFlugBuchungBehav ior">
            <serviceMetadata httpGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
            </serviceBehaviors>
            </behaviors>
            <services>
            <service behaviorConfiguration="UrbanAirlineWebservice.Urba nFlugBuchungBehavior"
            name="UrbanAirlineWebservice.UrbanFlugBuchung">
            <endpoint address="http://localhost:8731" binding="wsHttpBinding" contract="UrbanAirlineWebservice.IUrbanFlugBuchung ">
            <identity>
            <dns value="localhost" />
            </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            <host>
            <baseAddresses>
            <add baseAddress="http://localhost:8731/Flugbuchung/" />
            </baseAddresses>
            </host>
            </service>
            </services>
            </system.serviceModel>
            </configuration>[/highlight]

            Und so hoste ich meinen Dienst:

            [highlight=c#] WebServiceHost svcHost = new WebServiceHost(typeof(UrbanFlugBuchung));
            svcHost.Open();[/highlight]

            Habe ich etwas Essentielles übersehen? Muss ich Endpunkte für den Fall von Webservices noch einmal extra deklarieren?

            Comment

            Working...
            X