Thông thường, tôi gặp lỗi này: (Dịch vụ "tên dịch vụ" trên Máy tính cục bộ khởi động và sau đó dừng lại. Một số dịch vụ tự động dừng nếu chúng không được dịch vụ hoặc chương trình khác sử dụng) khi có điều gì đó sai với mã của tôi, chẳng hạn như không tồn tại đường dẫn ổ đĩa, v.v. Dịch vụ windows sẽ không khởi động.
Tôi có dịch vụ windows sao lưu thư mục / tệp vào một vị trí nếu nó đạt đến giới hạn kích thước. Tất cả các chi tiết đều được cung cấp bởi Cấu hình XML mà dịch vụ windows đọc khi bắt đầu. Tôi có một biểu mẫu cửa sổ riêng có một nút thực hiện chính xác những gì mà chương trình cửa sổ của dịch vụ cửa sổ của tôi đang làm. Tôi sử dụng các biểu mẫu windows của mình để gỡ lỗi mã trước khi đưa nó vào dịch vụ windows của mình.
Khi tôi bắt đầu các biểu mẫu cửa sổ của mình. Nó làm những gì nó cho là phải làm. Khi tôi đặt mã của mình vào phương thức OnStart () của dịch vụ windows, lỗi đã xuất hiện.
Đây là mã của tôi:
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();
}
}
Tôi không biết điều gì khiến dịch vụ cửa sổ không khởi động, trình mô phỏng biểu mẫu cửa sổ hoạt động tốt. Hình như có vấn đề gì thì phải?
CẬP NHẬT: Sau nhiều lần dùng thử, tôi nhận thấy rằng chỉ sử dụng một thư mục thư mục (tệp w / out), dịch vụ windows không hoạt động. Khi tôi thay thế biến fileWatch bằng một tệp cụ thể (bao gồm cả thư mục của nó), dịch vụ windows bắt đầu. Khi tôi thay đổi nó trở lại vị trí thư mục, nó không hoạt động. Điều tôi nghĩ là các vị trí thư mục không hoạt động trong trình xem tệp.
Khi tôi thử tạo một dịch vụ windows mới theo dõi vị trí thư mục, nó đã hoạt động .. Tuy nhiên, khi tôi thử cùng một vị trí trong dịch vụ windows ban đầu của mình, nó không hoạt động! Tôi đã nghĩ đến $ # * ed! Có vẻ như tôi phải tạo một dịch vụ windows mới và xây dựng trình cài đặt mỗi khi tôi đặt mã / chức năng mới .. Bằng cách này, tôi có thể theo dõi vị trí gặp lỗi.