关于:lucene.net +盘古+window service 的调试问题

在将lucent.net +pangu +window service  在启动服务的时候出现了错误.

具体的错误 当然还是 服务启动了又停止了什么什么的.

是什么问题呢? 昨天的window service 昨天已经把这个错误解决了.

为什么还是报错.

什么办法解决呢?  调试代码才是王道. 当window service 怎么调试呢? 在网上找了一堆发现 下面的文章才是王道啊:

文章来自:http://www.cnblogs.com/xzwplus/archive/2008/03/30/1129452.html

   关于调试windows service, 其实这是一个老生常谈的问题了.

    通常的处理办法是, 在service运行后, 在调试器中选择attach to process.

    然而这种做法也有一定的局限性, 例如在service启动时的OnStart事件中的代码, 基本上很难调试. 往往当attach到我们的service的时候, 这部分代码已经执行过了. 于是, 有人提出, 可以另写一个project来调用这个OnStart方法, 或将OnStart方法中的代码搬到另一个project中测试. 不过, 这些方法终究不是以windows服务的方式调试的, 不能够最真实的反应service运行时的执行状况(如权限问题等环境问题).

    我的做法是, 在OnStart方法的最开始部分加上"Debugger.Launch()"的调用, 当service运行到此处时, 将会弹出一个选择调试器的对话框, 同时暂停在当前位置. 这样, 我们就做到了在代码中手动的启动调试器.

    示例代码如下:

using System.Diagnostics;
 
public partial class MyService : ServiceBase{
    public MyService(){
        InitializeComponent();
    } 
 
    protected override void OnStart(string[] args){
#if DEBUG
        Debugger.Launch();    //Launches and attaches a debugger to the process.
#endif
        // TODO: add your initialize code here.
    } 
 
    protected override void OnStop(){
    }
}
 
 
调试的结果是: 没有找到C:\Program Files\计算机名\Dictionaries\dict.dct 的一部分....
这才明白原来是要将dictionaries文件放到服务安装文件夹的同级[如:安装的是setup1 就是在setup1同级] 在这纠正下昨天的文章 当然一般的控制台程序 放dictionarises文件夹的位置是在bin文件夹下面的,但是window service 是不同的.要放在的位置是
安装文件夹的同级.
当然如果使用的是:Dict\Dict.Dct 文件夹下面的 放置的位置又使不同的要放置的位置是:C:\Program Files\计算机名\Setup1(安装的服务名)\Dict\Dict.Dct.
如果还有别的放置位置我就不晓得了,但是最好是调试下项目 这样放置的位置才会一目了然.调试的方法已经放到上面了.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值