赵钎焱,众品网,女子发现山洞闪金光 进去后兴奋疯了
今天做了一个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版本才行?想想都不可能,回头再去找,发现在服务的入口出现了一个问题,在部署时没有注意到:
简单说明一下:因为在建服务时我没有没有配置启动参数。所以,服务启动时在无参数的情况下,会进入“后台控制”类型的代码。后台控制代码会要求与桌面交互的,而默认服务是不能与桌面进行交互,肯定会出问题的。(没看懂,也不要紧,毕竟您不必对此感兴趣)。
只需要知道一点:是因为细节处理上的一个大意,急于部署服务,而忽略了此,导致花了大半天天的时间来找问题。很不值,所以,做事放慢节奏是很重要的。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论