Genellikle şu hatayı alıyorum: (Yerel Bilgisayardaki "hizmet adı" hizmeti başlatıldı ve sonra durdu. Bazı hizmetler başka hizmetler veya programlar tarafından kullanılmıyorsa otomatik olarak durur) kodumda, var olmayan gibi bir sorun olduğunda sürücü yolları, vb. Windows hizmeti başlamaz.
Klasörü / dosyaları, boyut sınırına ulaştıysa bir konuma yedekleyen bir Windows hizmetim var. Ayrıntıların tümü, Windows hizmetinin başlangıçta okuduğu bir XML Yapılandırması tarafından sağlanır. Windows hizmetimin onstart'ın yaptığı şeyi tam olarak yapan bir düğmeye sahip ayrı bir windows formum var. Windows formlarımı, kodu Windows hizmetime koymadan önce hata ayıklamak için kullanıyorum.
Windows formlarımı başlattığımda. Yapması gerekeni yapıyor. Kodumu Windows hizmeti OnStart () yöntemine koyduğumda hata ortaya çıktı.
İşte kodum:
protected override void OnStart(string[] args)
{
private static string backupConfig = @"D:\LogBackupConfig\backupconfig.xml";
private static string serviceStat = @"D:\LogBackupConfig\Status.txt";
private static string fileFolderStat = @"D:\LogBackupConfig\FileFolderStat.txt";
protected override void OnStart(string[] args)
{
if (File.Exists(backupConfig))
{
FileSystemWatcher watcher = new FileSystemWatcher();
XmlTextReader reader = new XmlTextReader(backupConfig);
XmlNodeType type;
List<string> listFile = new List<string>();
string fileWatch = "";
//this loop is for reading XML elements and assigning to variables
while (reader.Read())
{
type = reader.NodeType;
if (type == XmlNodeType.Element)
{
if (reader.Name == "File")
{
reader.Read();
fileWatch = reader.Value;
}
else if (reader.Name == "Folder")
{
reader.Read();
fileWatch = reader.Value;
}
}
}
reader.Close();
watcher.Path = fileWatch;
watcher.Filter = "*.*";
//this loop reads whether the service will watch a file/folder
XmlTextReader reader1 = new XmlTextReader(backupConfig);
while (reader1.Read())
{
type = reader1.NodeType;
if (type == XmlNodeType.Element)
{
if (reader1.Name == "File")
{
watcher.IncludeSubdirectories = false;
watcher.Changed += new FileSystemEventHandler(OnChangedFile);
}
else if (reader1.Name == "Folder")
{
watcher.IncludeSubdirectories = true;
watcher.Changed += new FileSystemEventHandler(OnChangedFolder);
}
}
}
reader1.Close();
watcher.EnableRaisingEvents = true;
}
else
{
StreamWriter sw = new StreamWriter(serviceStat, true);
sw.WriteLine("File not found. Please start the Log Backup UI first.");
sw.Close();
}
}
Windows servisinin başlamamasına neyin sebep olduğunu bilmiyorum, windows form simülatörü iyi çalıştı. Sorun ne gibi görünüyor?
GÜNCELLEME: Birçok denemeden sonra, yalnızca bir klasör dizini (dosya olmadan) kullandığımı fark ettim, Windows hizmeti çalışmıyor. FileWatch değişkenini belirli bir dosyayla (dizini dahil) değiştirdiğimde, Windows hizmeti başladı. Onu bir klasör konumuna geri değiştirdiğimde işe yaramadı. Bence klasör konumları bir dosya izleyicide çalışmıyor.
Bir klasör konumunu izleyen yeni bir Windows hizmeti oluşturmaya çalıştığımda işe yaradı .. Ancak, orijinal Windows hizmetimde aynı konumu denediğimde işe yaramadı! Aklımdaydım! Görünüşe göre yeni bir Windows hizmeti oluşturmam ve her yeni kod / işlev yerleştirdiğimde yükleyiciyi oluşturmam gerekiyor. Bu şekilde nerede hata aldığımı takip edebilirim.