일반적으로 다음과 같은 오류가 발생합니다. (로컬 컴퓨터의 "서비스 이름"서비스가 시작된 후 중지되었습니다. 일부 서비스는 다른 서비스 나 프로그램에서 사용하지 않는 경우 자동으로 중지됩니다.) 존재하지 않는 코드와 같이 내 코드에 문제가있을 때 드라이브 경로 등. Windows 서비스가 시작되지 않습니다.
크기 제한에 도달하면 폴더 / 파일을 위치에 백업하는 Windows 서비스가 있습니다. 세부 정보는 모두 Windows 서비스가 시작할 때 읽는 XML 구성에 의해 제공됩니다. 내 Windows 서비스의 onstart가 수행하는 작업을 정확히 수행하는 단추가있는 별도의 Windows 양식이 있습니다. Windows 서비스에 코드를 넣기 전에 코드를 디버깅하기 위해 Windows 양식을 사용합니다.
Windows Forms를 시작할 때. 할 일을합니다. Windows 서비스 OnStart () 메서드에 내 코드를 넣으면 오류가 나타납니다.
내 코드는 다음과 같습니다.
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 서비스가 시작되지 않는 이유를 모르겠지만 Windows Form Simulator가 제대로 작동했습니다. 무엇이 문제인 것 같습니까?
업데이트 : 여러 번의 시도 끝에 폴더 디렉터리 (파일 없음) 만 사용하면 Windows 서비스가 작동하지 않는다는 것을 알게되었습니다. fileWatch 변수를 특정 파일 (디렉토리 포함)로 바꾸면 Windows 서비스가 시작되었습니다. 폴더 위치로 다시 변경했을 때 작동하지 않았습니다. 내가 생각하는 것은 폴더 위치가 파일 감시자에서 작동하지 않는다는 것입니다.
폴더 위치를 감시하는 새 Windows 서비스를 만들려고했을 때 작동했습니다. 그러나 원래 Windows 서비스에서 동일한 위치를 시도했을 때 작동하지 않았습니다! 나는 mindf $ # * ed했다! 새 코드 / 함수를 배치 할 때마다 새 Windows 서비스를 만들고 설치 프로그램을 만들어야하는 것 같습니다. 이렇게하면 오류가 발생한 위치를 추적 할 수 있습니다.