[问题]写了个windows service用来监视文件夹的变化,调试的时候可以通过,可是用installtuil安装的时候却不能启动,大家帮我看看
我的服务是这样的:
private FileSystemWatcher curWatcher;//设置一个侦听,当指定的文件夹发生变化时出发事件
我在服务里有个初始化变量的方法:
/// <summary>
/// 数据初始化
/// </summary>
private void CreateObject()
{
log_txt = ConfigurationManager.AppSettings[ "LogTxt "].ToString();
file_url = ConfigurationManager.AppSettings[ "FileUrl "].ToString();
file_bak = ConfigurationManager.AppSettings[ "FileBak "].ToString();
this.WriteMessage( "FileService服务正在进行初始化!\r\n ");
this.CanPauseAndContinue = true;
this.CanStop = true;
servicePaused = false;//用来暂停服务的变量,为true时表示服务暂停
this.WriteMessage( "FileService初始化成功!\r\n ");
}
在OnStart方法中我调用了上面的CreateObject()方法
protected override void OnStart(string[] args)
{
this.CreateObject();
this.WriteMessage( "FileService已经成功开启!\r\n ");
this.WriteMessage( "正在设置文件侦听!\r\n ");
//设置一个侦听,当指定的文件夹发生变化时触发事件
curWatcher = new FileSystemWatcher();
curWatcher.BeginInit();
curWatcher.IncludeSubdirectories = true;
curWatcher.Path = file_url;
curWatcher.Created += new FileSystemEventHandler(OnFileCreated);
curWatcher.EnableRaisingEvents = true;
curWatcher.EndInit();
}
服务编译是可以通过的,我也添加了安装程序ProjectInstaller.cs,生成后在\obj\Debug目录下生成了文件**.exe我在控制台也执行了installutil **.exe.查看服务里面也确实有这个服务,但是我选择启动服务的时候....
问题就出现了,在启动的时候提示内部错误.
而且我在服务中有this.WriteMessage( "FileService服务正在进行初始化!\r\n ");这样的方法是将这句话写入文本,可是也没有出现,这是错在哪里啊,大家帮帮忙!
[解决办法]
你出现的这个服务能安装,但服务不能启运的情况我碰到过一次,
后来检查出来的原因是我 OnStar 里的某段代码执行时抛出异常了,
所以启动不了。
我怀疑你的情况跟我一样。
[解决办法]
本来的app.config在编译之后会生成一个 工程名.exe.config
[解决办法]
没有遇见过
[解决办法]
事件管理器里有什么错误,有些异常错误会记录在那里
[解决办法]
服务使用什么帐户登陆的,系统帐户,还是用户帐户
[解决办法]
ConfigurationManager.AppSettings[ "FileUrl "].ToString();
// 是这样取的,对。
可能是你的 app.config 写得不对吧?
我的是这样的:
<?xml version= "1.0 " encoding= "utf-8 " ?>
<configuration>
<appSettings>
<add key= "ConnectionString " value= "server=.;database=;uid=;pwd=; "/>
</appSettings>
</configuration>