通常,我会遇到这样的错误:(本地计算机上的“服务名称”服务启动然后停止。如果其他服务或程序未使用某些服务,则会自动停止)当我的代码出现错误时,例如不存在的驱动器路径等。windows服务将不会启动。
我有一个Windows服务,如果文件夹/文件达到大小限制,它可以备份到某个位置。详细信息都由Windows服务在启动时读取的XML配置提供。我有一个单独的Windows表单,其中有一个按钮,它完全执行我的Windows服务的onstart正在执行的操作。在将代码放入Windows服务之前,我使用我的Windows表单来调试代码。
当我启动我的windows表单时。它做了它应该做的事情。当我将我的代码放在windows service 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窗体模拟器工作得很好。有什么问题吗?
更新:经过多次尝试,我注意到仅使用文件夹目录(带输出文件),Windows服务不起作用。当我用特定文件(包括其目录)替换fileWatch变量时,Windows服务启动了。当我将其更改回文件夹位置时,它不起作用。我认为文件夹位置在文件观察者中不起作用。
当我尝试创建一个监视文件夹位置的新windows服务时,它起了作用。。然而,当我在我原来的windows服务中尝试相同的位置时,它不起作用!我是mindf$#*ed!似乎每次我放置新代码/函数时,我都必须创建一个新的windows服务并构建安装程序。。这样我就可以跟踪哪里出错了。
我发现通过简单地更改程序将现有的Windows服务转换为控制台非常方便。有了这个更改,您可以通过在Visual Studio中调试或正常运行可执行文件来运行程序。但它也可以作为Windows服务工作。我还写了一篇关于它的博客文章
program.cs
class Program
{
static void Main()
{
var program = new YOUR_PROGRAM();
if (Environment.UserInteractive)
{
program.Start();
}
else
{
ServiceBase.Run(new ServiceBase[]
{
program
});
}
}
}
YOUR_PROGRAM. cs
[RunInstallerAttribute(true)]
public class YOUR_PROGRAM : ServiceBase
{
public YOUR_PROGRAM()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
Start();
}
protected override void OnStop()
{
//Stop Logic Here
}
public void Start()
{
//Start Logic here
}
}
不确定这是否有用,但对于调试服务,您可以在OnStart方法中始终使用以下内容:
protected override void OnStart(string[] args)
{
System.Diagnostics.Debugger.Launch();
...
}
这样,您就可以将visual studio连接到进程并具有更好的调试能力。
希望这有帮助,祝你好运
如果服务像这样启动和停止,则意味着您的代码正在引发未经处理的异常。这很难调试,但有几个选项。
本地计算机上的MySQL服务启动后停止。如果其他服务或程序不使用某些服务,它们会自动停止。 谁能解决这个问题?谢谢
我已经用WinRun4J创建了一个windows服务。应用程序已成功安装为服务。但是,当我尝试在命令提示符下使用run
本文向大家介绍sql2005 本地计算机上的SQL SERVER服务启动后又停止了解决方法,包括了sql2005 本地计算机上的SQL SERVER服务启动后又停止了解决方法的使用技巧和注意事项,需要的朋友参考一下 本方法主要是解决SQL Server运行过程中出现的“本地计算机上的MSSQLSERVER服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的”解决方法。 笔者
我已经从以下网站下载了“jenkins-1.501.zip”http://jenkins-ci.org/content/thank-you-downloading-windows-installer . 我已经解压缩了zip文件并成功地在Windows7上安装了Jenkins。詹金斯在好的。我想从控制台停止Jenkins服务。我该怎么做?通过控制台/命令行启动和重新启动的方式是什么?
问题内容: 我已经从http://jenkins-ci.org/content/thank-you-downloading-windows- installer 下载了“ jenkins-1.501.zip” 。 我已经解压缩了zip文件,并在Windows 7上成功安装了Jenkins。詹金斯的表现不错。我想从控制台停止Jenkins服务。我怎样才能做到这一点?通过控制台/命令行启动和重新启动的
启动Windows服务时不断遇到此错误消息。 本地计算机上的服务启动后停止。如果其他服务和程序不使用某些服务,它们会自动停止。 我的代码: