locked
Debuggen eines lokal gehosteten WCF-Diensts RRS feed

  • Frage

  • Hallo,

    ich habe einen WCF-Dienst gemäss "Gewusst wie: Hosten eines WCF-Diensts in einem verwalteten Windows-Dienst" erstellt. Der Dienst wurde zuvor als WCF Service-Lib erstellt und konnte problemlos debuggt werden. Das migrieren zu einer Konsolenanwendung war kein Problem, zwei Klassen dazufügen und fertig war der Dienst.

    Zum Installieren des Dienstes konnte ich das empfohlene InstallUtil.exe nicht nutzen. Win7 meldet, es wäre keine zulässige Win32-Anwendung. ????

    Installiert habe ich dann mit "sc create ... ". Der Dienst wurde von mir mit den Task Manager (Dienste) gestartet. Die Funktionsprüfung verlief einwandfrei.

    Beim Versuch den Dienst zu debuggen bin ich nach "Gewusst wie: Debuggen von Windows-Dienstanwendungen" vorgegangen.

    Ich habe Microsoft Visual Studio 2010 Professional - DEU Version 10.0.40219.1 SP1 Rel mit dem entsprechenden Framework 4.0.30319 SP1Rel im Einsatz. Laut Beschreibung wäre in der IDE unter "Debuggen" die Option "An den Prozess anhängen" zu finden. Die sehe ich dort nicht.

    Statt dessen ist diese Option bei mir unter "Extras" zu finden. Wähle ich die Option "An den Prozess anhängen" an, so ist mein Prozess in der Liste sichtbar, Typ "Verwaltet (v4.0.30319)". Diese Zeile ist aber ausgegraut. Bei den anderen Prozessen ist der Button "Anfügen" jeweils aktiv. Wähle ich meinen Dienst an so wird der Button "Anfügen" inaktiv, das bedeutet, ich kann bei meinem Dienst das Debuggen nicht einleiten.

    Projekt-Konfiguration : Aktiv (Debug)
    App_Config: unter system.web -> compilation debug="true"

    Habe ich etwas übersehen? Was fehlt noch?
    Gruss Klaus.


    KR









    • Bearbeitet KlaRa1 Mittwoch, 13. Juni 2012 15:08
    Mittwoch, 13. Juni 2012 12:31

Antworten

  • Hallo,

    der Fall ist gelöst.

    In der IDE unter Extras habe ich die Option "An den Prozess anhängen". Ich sah dort vermeintlich meinen Prozess. Es war aber der <App>.vshost.exe. Dieser war nicht anzuwählen.

    Unterhalb der Liste der verfügbaren Prozesse sind zwei Checkboxen. "Prozesse aller Benutzer anzeigen" und "Prozesse in allen Sitzungen anzeigen". Beide Checkboxen müssen aktiviert sein. Dann sieht man in der Liste auch <App>.exe, also den Prozess den man anhängen muss.

    Gruss Klaus.


    KR


    • Bearbeitet KlaRa1 Mittwoch, 20. Juni 2012 23:29
    • Als Antwort markiert KlaRa1 Mittwoch, 20. Juni 2012 23:29
    Mittwoch, 20. Juni 2012 23:28

Alle Antworten

  • Hast du ein Install bzw Setup Projekt in deinem Dienst? Das benötigst du um installutil nutzen zu können.

    Siehe: http://msdn.microsoft.com/en-us/library/zt39148a.aspx

    An einen prozess anhängen kannst du erst wenn dieser läuft. Wie es scheint steigt dieser aber ziemlich früh aus. Setze an deiner methode an der vermutlich der Fehler kommt ein Debugger.Launch(); ein, dann wird ein JIT Debugger gestartet und du kannst dein Visual Sutdio an dieser Stelle an den prozess anhängen.

    Dienstag, 19. Juni 2012 13:00
  • Hallo Francesco,

    gemäss der Vorlage habe ich diesen Code eingefügt.

    ' Provide the ProjectInstaller class which allows 
    ' the service to be installed by the Installutil.exe tool
    <RunInstaller(True)> _
    Public Class ProjectInstaller
        Inherits Installer
        Private process As ServiceProcessInstaller
        Private service As ServiceInstaller
    
        Public Sub New()
            process = New ServiceProcessInstaller()
            process.Account = ServiceAccount.LocalSystem
            service = New ServiceInstaller()
            service.ServiceName = "OL_WCF_Service"
            Installers.Add(process)
            Installers.Add(service)
        End Sub
    End Class

    > An einen prozess anhängen kannst du erst wenn dieser läuft.

    Das war mir klar. Sonst würde der Prozess ja auch nicht in der Auswahlliste stehen.

    >Wie es scheint steigt dieser aber ziemlich früh aus.

    Der Prozess arbeitet wie er soll. Zumindest werden die verschiedenen Aufgaben zu voller Zufriendenheit ausgeführt. In der Auswahlliste der Prozesse ist er nur nicht schwarz hinterlegt, sondern in grauer Schrift. Wählt man die Zeile an, so wird der Button "Anfügen" inaktiv.

    Ich werden das mit dem Debugger.Launch(); mal testen.

    Gruss Klaus.


    KR


    • Bearbeitet KlaRa1 Dienstag, 19. Juni 2012 17:04
    Dienstag, 19. Juni 2012 17:03
  • Hallo,

    der Fall ist gelöst.

    In der IDE unter Extras habe ich die Option "An den Prozess anhängen". Ich sah dort vermeintlich meinen Prozess. Es war aber der <App>.vshost.exe. Dieser war nicht anzuwählen.

    Unterhalb der Liste der verfügbaren Prozesse sind zwei Checkboxen. "Prozesse aller Benutzer anzeigen" und "Prozesse in allen Sitzungen anzeigen". Beide Checkboxen müssen aktiviert sein. Dann sieht man in der Liste auch <App>.exe, also den Prozess den man anhängen muss.

    Gruss Klaus.


    KR


    • Bearbeitet KlaRa1 Mittwoch, 20. Juni 2012 23:29
    • Als Antwort markiert KlaRa1 Mittwoch, 20. Juni 2012 23:29
    Mittwoch, 20. Juni 2012 23:28