.NET Window 服务 出现 错误1053
今天做了一个windows 服务,在安装时出现了问题。
问题描述
1. 好像是安装成功了的,因为在服务列里有这个服务:
2. 但是就是启动不了。点启动
系统环境:
Win7 ,Framework 4
原因为何?
找了很久没招。于是,我在调出了一个之前写的windows 服务(CareEye),安装,启动服务......能启动:
?
?
最土的办法:比较项目有什么差别。程序就不用看了,主要是项目配置方面 的。还真发现了问题:
这是能跑的服务:
下面的是跑不起来的服务配置:
Client Profile的.NET Framework
Framework 不一样,就有如此大的区别?于是乎找一下,大致是这么说的:
Client Profile的.NET Framework是不加的子集或者说是精简版(Compact Version)。
为什么要引入这个简化版本呢?
减少.NET Framework以及包还.NET Framework的应用程序的部署时间;
减少.NET Framework部署的失败;
减少.NET Framework在ISV软件的所占大小,从而给其软件更多的空间;
减少安装了.NET Framework Client Profile的系统受攻击的“界面”,因为Client Profille中部包括ASP.NET和一些服务器所要的组件;
Jossef的博客What’s new in .NET Framework 4 Client Profile Beta 2 给出了详细的解释。
问题算是找着了。但是我的项目所有的都是用 Framework 4 ,都要改成Client Profile的?
原来前面都是扯淡
我思考再三,不能修改Framework 4 ,这无疑是大的版本变更才做的事。因为所有的系统模块折Framewok版本,都会要求变成一致,才能运行。而系统(一拍天下)在线上跑着,这是运营大忌。
但是,我回头想一个问题:按我之前的分析,Framework 4 不能创建windows service了,还得非是什么Client Profile版本才行?想想都不可能,回头再去找,发现在服务的入口出现了一个问题,在部署时没有注意到:
简单说明一下:因为在建服务时我没有没有配置启动参数。所以,服务启动时在无参数的情况下,会进入“后台控制”类型的代码。后台控制代码会要求与桌面交互的,而默认服务是不能与桌面进行交互,肯定会出问题的。(没看懂,也不要紧,毕竟您不必对此感兴趣)。
只需要知道一点:是因为细节处理上的一个大意,急于部署服务,而忽略了此,导致花了大半天天的时间来找问题。很不值,所以,做事放慢节奏是很重要的。
补充:Web开发 , ASP.Net ,