注意一:报错:“本地计算机上的 *** 服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

  该问题主要的原因是 Service服务程序中有错误。

  遇到这个问题时,无论是重新安装服务,还是重启计算机,每次启动时都会弹出这个错误提示框。

  解决这种问题最好的办法就是:使用 控制台应用程序 来调试,等调试通过后,在加入到Service服务程序中。

注意二: 报错 :试图加载格式不正确的程序

原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的。不能混编访问。不然会出现“试图加载格式不正确的程序”的错误。

特别是引用其他第三方类库或者C++编译的类库时,容易出现这个问题。

附:相关参考:

64位操作系统下IIS报“试图加载格式不正确的程序”错误 - 软件设计师到程序员 - 博客频道 - CSDN.NET

使用C#创建windows 服务 - 往事如锋 - 博客园

注意三:使用ManagedInstallerClass.InstallHelper安装服务的蛋疼问题

这个路径绝对没错,服务映像exe也没问题,事实上通过命令行调用InstallUtil.exe工具进行手动安装都是能正常安装的,但使用InstallHelper()方法就老是会报这个错?

  解决方法:目标平台选为x86即可。

错误提示: “ 未能加载文件或程序集或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。”

一定要保证服务和调用程序处于相同的.net版本和目标平台下。

      

附:

【C#】使用ManagedInstallerClass.InstallHelper安装服务的蛋疼问题

注意四:在Service服务中获取当前程序的运行目录

  之前在winform程序中获取exe程序当前的运行目录,我用的都是 System.Environment.CurrentDirectory 。但今天在测试一个服务程序时,运行时获取到的当前程序运行目录竟然是 “C:\Windows\SysWOW64”  ,下面是对各种获取程序当前目录的测试结果:

       protected override void OnStart(string[] args)
{
//获取和设置当前目录(即该进程从中启动的目录)的完全限定路径。
var str1 = System.Environment.CurrentDirectory; XueLog("Environment.CurrentDirectory " + str1); //获取当前 Thread 的当前应用程序域的基目录,它由程序集冲突解决程序用来探测程序集。
var str2 = System.AppDomain.CurrentDomain.BaseDirectory; XueLog("AppDomain.CurrentDomain.BaseDirectory " + str2); //获取和设置包含该应用程序的目录的名称。
var str3 = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; XueLog("SetupInformation.ApplicationBase " + str3); }

程序运行结果:

可见,Environment.CurrentDirectory 在Service服务中获取的并不一定是当前exe程序的目录

转载请注明出处。

[开发笔记]-Windows Service服务相关注意事项的更多相关文章

  1. C# Windows Service服务的创建和调试

    前言 关于Windows服务创建和调试的文章在网络上的很多文章里面都有,直接拿过来贴在这里也不过仅仅是个记录,不会让人加深印象.所以本着能够更深刻了解服务项目的创建和调试过程及方法的目的,有了这篇记录 ...

  2. quartz.net结合Topshelf实现windows service服务托管的作业调度框架

    topshelf可以很简单方便的实现windows service服务,详见我的一篇博客的介绍 http://www.cnblogs.com/xiaopotian/articles/5428361.h ...

  3. 震惊!Windows Service服务和定时任务框架quartz之间原来是这种关系……

    过场CG:   接到公司领导的文件指示,“小熊”需要在6月底去海外执行一个行动代号为[定时任务]的营救计划,这个计划关系到公司某个项目的生死(数据安全漏洞),作战部拟定两个作战方案: 方案一:使用务定 ...

  4. .Net Windows Service(服务) 调试安装及System.Timers.Timer 使用

    Windows Service(服务)  是运行在后台的进程 1.VS建立 Windows 服务(.NET Framework) 2.添加Timer 双击Service1.cs可以拖控件(System ...

  5. Windows Service 服务搭配FluentScheduler实现定时任务调度

    Windows Service 服务 创建Windows Service 项目 创建一个Windows Service项目,并将项目名称改为 TaskWindowService 在解决方案资源管理器内 ...

  6. [开发笔记]-控制Windows Service服务运行

    用代码实现动态控制Service服务运行状态. 效果图: 代码: #region 启动服务 /// <summary> /// 启动服务 /// </summary> /// ...

  7. 使用C#编程语言开发Windows Service服务

    转载-https://www.cnblogs.com/yubao/p/8443455.html Create Windows Service project using Visual Studio C ...

  8. [Openwrt 项目开发笔记]:Samba服务&vsFTP服务(四)

    [Openwrt项目开发笔记]系列文章传送门:http://www.cnblogs.com/double-win/p/3888399.html 正文: 在上一节中,我们讲述了如何在路由器上挂载U盘,以 ...

  9. war包部署在tomcat下,使用windows service服务方式启动tomcat服务器,在包含调用dll的模块,报dll找不到问题的解决办法

    问题描述: 开发了一个需要调用dll的java web程序,在idea开发环境下运行调试没问题,可以正常运行,在tomcat/bin下,运行批处理startup.bat,启动tomcat服务器,也可以 ...

随机推荐

  1. TCP拥塞控制

    TCP必须使用端到端拥塞控制而不是使网络辅助的拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈.TCP采用的方法是让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率. 几个相关 ...

  2. Jqplot使用总结之二(双Y轴)

    最近需要用Jqplot做双Y轴的Chart图,首先我找到了文档上的例子并对数据做了一些调整: 1.例子展示: var s1 = [["2002-01-01", 112000], [ ...

  3. Python开发者须知 —— Bottle框架常见的几个坑

    Bottle是一个小巧实用的python框架,整个框架只有一个几十K的文件,但却包含了路径映射.模板.简单的数据库访问等web框架组件,而且语法简单,部署方便,很受python开发者的青睐.Pytho ...

  4. drush cc all 报错

    请看好 指明了Module文件的行数 报错一定要多看看哦.

  5. graph_tool源码及其注释

    #! /usr/bin/env python # -*- coding: utf-8 -*- # # graph_tool -- a general graph manipulation python ...

  6. stream流批量读取并合并文件

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...

  7. Js作用域链及变量作用域

    要理解变量的作用域范围就得先理解作用域链 用var关键字声明一个变量时,就是为该变量所在的对象添加了一个属性. 作用域链:由于js的变量都是对象的属性,而该对象可能又是其它对象的属性,而所有的对象都是 ...

  8. div中字垂直居中对齐

    div中的文本水平居中,一般都是用text-align:center;就可以解决,那么垂直居中呢,知道vertiacl-align:middle;但有时候却不起作用:整理下div中文本垂直居中对齐的问 ...

  9. (19)odoo中的javascript

    -----------更新日期15:17 2016-02-16 星期二-----------* 用到的js库   我们可以打开 addons/web/views/webclient_template. ...

  10. Mybatis 学习-3

    1.设计Dao接口 public interface UserDao { public boolean addUser(User user); } public interface CategoryD ...