windows 服务学习、开发心得

最近做一个系统,需要用到windows服务,感慨良多。这里讲开发过程中遇到的问题在此分享。

1服务程序的编写

开始觉得和普通控制台程序没啥区别,后来发现区别挺大的

2.服务安装和调试

主要的问题都出在这,当然也和自己编码关系挺大。

开始服务安装没啥问题,但是就是无法启动。弹出错误1053,服务无法启动。经过总结,弹出这个问题必定是初始化代码或OnStart()里出了问题。

第一个问题是自己代码走查发现的,vs2010坑爹的工具箱里默认的Timer是不能在非winform中使用的,详情可见http://www.cnblogs.com/shang20017/archive/2009/03/16/1413798.html

改了这个还是无法启动,把代码全屏蔽一句一句往里面加反复安装尝试,发现问题在于我之前用了一个Messagebox来报异常,在Debug那里是没问题的,但是过来就有问题了。

这下服务可以安装启动了,但我发现服务还是未能才上数据。

按照网上附加到进程的方法感觉挺不好用的,最后用的日志调试的。

调试建议用日志,如

1         //日志记录器
2         log4net.ILog Logger = log4net.LogManager.GetLogger("MyLogger");
3 
4             Logger.Info("====================数据采集程序尝试启动====================");
5             Logger.Info("程序版本:" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
6             InitializeComponent();

需引用log4net.dll。引后还需在app.config中添加

  <log4net>
    <root>
      <level value="ALL" />
      <appender-ref ref="LogFileAppender" />
    </root>

    <appender name="LogFileAppender"  type="log4net.Appender.FileAppender" >
      <param name="File" value="ServiceLog-file.log" />
      <param name="AppendToFile" value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"  value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt;%n - %m%n" />
      </layout>
    </appender>
  </log4net>

assembly中添加以下信息

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

用日志调试发现问题在于读取xml无法读上,但是在debug读取没问题。用绝对路径尝试了下发现是坑爹的路径问题,用下面的方法解决了。

参考链接http://www.cppblog.com/skybook/archive/2008/10/07/63383.html?opt=admin

在Windows服务里面,如果访问文件,采用绝对路径可以.如果采用相对路径,和生成的服务文件在同一目录下面.

 

using System.Reflection;
using System.IO;

        static string assemblyFilePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
        static string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);

        readonly static string TimeInterval = XmlHelper.Read(assemblyDirPath + "\\Settings.xml", "Set/DataMode", "TimeInterval");

 

 

 

完成了之后就觉得开始还是走了不少弯路,这里把问题发出来和大家共勉,希望能帮助到大家。

posted @ 2012-09-06 11:19  嚜嚒  阅读(145)  评论(0编辑  收藏  举报