.net - Ny Windows Service Application version starter ikke

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en windows service, der har kørt. Jeg har oprettet en ny version af ansøgningen. Jeg gik til windows serveren og stoppede tjenesten. Jeg kopierede derefter i den nye .exe til tjenesten og forsøgte at starte tjenesten. Tjenesten vandt ikke, men det forsøger at starte, og jeg kan ikke finde ud af hvorfor. Jeg er positiv, at jeg har gjort det før. Skal jeg afinstallere tjenesten og geninstallere den?


Server: Windows Server 2003 R2
Application. NET Version: 2.0
Udviklet med: VS 2005
Sprog VB.NET


OnStart Metode:


Protected Overrides Sub OnStart(ByVal args() As String)
    ' Add code here to start your service. This method should set things
    ' in motion so your service can do its work.
    Me.Timer1.Enabled = True
End Sub


InitializeComponent:
CHECKDB\_INTERVAL\_TIME=10


Private Sub InitializeComponent()
    Dim iWaitTime As Int16
    iWaitTime = CType(ConfigurationManager.AppSettings("CHECKDB\_INTERVAL\_TIME"), Int16)
    Me.components = New System.ComponentModel.Container
    Me.Timer1 = New System.Timers.Timer()
    Me.Timer1.Interval = iWaitTime * 60000
    '
    'HarleyCloser
    '
    Me.ServiceName = "MyService"

End Sub

Friend WithEvents Timer1 As System.Timers.Timer


Jeg fandt problemet. Problemet var med et direktiv, der blev brugt til at gøre noget anderledes i Debug mode versus Release mode.

Bedste reference


Hvis du ændrer tjenesten exe, skal du virkelig afinstallere den forrige og installere den nye. Og ofte skal du genstarte for at afinstallere afinstallationen, før du kan installere den nye.

Andre referencer 1


Du skal bruge 'installutil' for at afinstallere den gamle service og derefter igen for at installere den nye. Du kan bruge 'installutil' via Visual Studio Command Prompt.


Som en sidebesked, hvis OnStart-metoden i din tjeneste tager lang tid at udføre, kan du starte en timer, der gør alt arbejdet, inde i denne OnStart-metode.

Andre referencer 2


Stoppe tjenesten, erstatte exe og genstarte det skal være fint, jeg har gjort det mange gange.


Noget du skiftede mellem versioner sætter en opgave, der tager lang tid i din OnStart. OnStart skal gå fra start til slut på under 30 sekunder. Tjek din OnStart-kode for noget, der blokerer.


Hvis du skal debugere OnStart her, er nogle tips om hvad du skal gøre, dog gælder grænsen på 30 sekunder stadig. Et andet tip er at sætte nogle logfiler til OnStart, der vil tilføje meddelelser til Windows-logfilen, der viser, hvor langt din kode er blevet. [3]

Andre referencer 3


Du skal bruge installutil til at installere og afinstallere. ALTID, at erstatte .EXE er ikke en god tilgang.


Du skal også kontrollere den bruger, hvorpå tjenesten udføres. Som standard tror jeg, at den lokale service, der ikke har mange privilegier, du kan indstille brugeren efter kode eller ved hjælp af tjenesterne snap i.


this.serviceProcessInstaller1.Account=System.ServiceProcess.ServiceAccount.User; this.serviceProcessInstaller1.Password=ConfigurationSettings.AppSettings [['password']]; this.serviceProcessInstaller1.Username=ConfigurationSettings.AppSettings [['brugernavn']];

Andre referencer 4


Jeg fandt udstedelsen. Der var nogle kode gemt i tjenesten med et fejlretningsdirektiv. Hvis tjenesten blev kompileret i Debug, så løb den som en konsol-applikation, hvis den blev kompileret i Release, så løber den som en tjeneste. Så tjenesten blev timing ud på OnStart, fordi det forsøgte at køre hele konsollen ansøgningen.