VB.NET Service.OnStart () Никогда не вызывается - PullRequest
0 голосов
/ 10 февраля 2019

Я использую vb.net для создания службы Windows, где в функции OnStart () я пытаюсь записать сообщение о его статусе, однако оно показывает, что функцияне вызывается. Здесь - это завершенный проект, а ниже - целевой код обслуживания:

Imports System.IO

Public Class FneishSQLBackupServicev2

    Dim backupTaken As Boolean = False

    Protected Overrides Sub OnStart(ByVal args() As String)
        WriteToFile("Sql automated backup service started")
        Try
            Timer1.Start()
        Catch ex As Exception
            WriteToFile(ex.StackTrace)
        End Try
    End Sub

    Protected Overrides Sub OnStop()
        WriteToFile("Sql automated backup service stopped")
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        WriteToFile("timer entered")
        If Date.Now.Hour = My.Settings.AutoBackupTime Then
            If backupTaken = False Then
                backupTaken = True
                TakeBackup()
            End If
        Else
            backupTaken = False
        End If
    End Sub

    Public Shared Sub WriteToFile(Message As String)
        Try
            Dim path As String = System.IO.Path.GetTempPath() + "\ServiceLog"

            If Directory.Exists(path) = False Then
                Directory.CreateDirectory(path)
            End If

            Dim filepath As String = System.IO.Path.GetTempPath() & "\ServiceLog\Log_" & DateTime.Now.Date.ToShortDateString.Replace("/".ToCharArray.GetValue(0), "_".ToCharArray.GetValue(0)) & ".txt"

            Dim log As System.IO.StreamWriter

            If File.Exists(filepath) = False Then
                log = File.CreateText(filepath)
            Else
                log = My.Computer.FileSystem.OpenTextFileWriter(filepath, True)
            End If

            Message = Date.Now.ToLocalTime & vbNewLine & Message & vbNewLine
            log.WriteLine(Message)
            log.Close()
        Catch ex As Exception

        End Try
    End Sub

End Class

Любая помощь, пожалуйста?Спасибо

1 Ответ

0 голосов
/ 10 февраля 2019

После дополнительных поисков и отладки с использованием EventLog я обнаружил, что он запускается успешно, однако проблема была в функциях WriteToFile, которые записывали в другую папку, поскольку System.IO.Path.GetTempPath() возвращал "C:\Windows\Temp", а не "C:\users\myuser\appdata\local\temp", когдаПозвонил в службы.

...