前面几篇文章讲了Worker Services的创建及部署及读取配置,然而这几天就是在结合这些,做了一个导出定时服务,在本地运行代码都实现了。
然后要发布时,就出现了几个问题:
问题一:
.net Core 3.0-发布时就会出现错误:
System.Threading 从 4.3.0 降级到 4.0.11
出现几个这样的错误,然后我看了包,我又没有,然后看了项目里面自带的,然后我又根据几个错误版本信息,依次引用,然后可以发布wind-64的了,
发布成功之后,我添加服务:
sc create ReportsExportWorkService binPath=E:PublishedWindowsServiceReportsExportWorkerService.exe//创建是成功的
sc query ReportsExportWorkService//查询状态是停止的
sc start ReportsExportWorkService//开启服务就报错了
报错码就是:
1053:服务没有及时响应启动或控制请求
然后网上各种找资源:
第一种尝试:将‘NETWORK SERVICE' 添加到Administrator组中,执行了,又发布了,还是报1053
第二种尝试:说配置有问题就是版本不对,看了一下是.net core 3.0,然后果断放弃了(注意一下:发布到Window服务器上面时,
如果报错可能就是你.net core 3.0的版本不是最新的,假如是最新的可能就是其他的问题)
后面就没有找到其他的资源了,然后我有尝试创建空Worker Services,在发布,然后是成功的。然后我就怀疑是我项目代码是不是有问题
然后我本地运行发现,是好的。百思不得其解为什么发布就有问题提,然后我又一步一步操作,把整套代码都调试了,发现代码是没有问题的,
后面我无意间把配置注释了,发布上去就是好的,而且不报错,无意中发现了惊喜,后面发现我把配置写死不读取配置也是可以的,那就可能是
Worker Services不能使用自带的读取配置的IConfiguration,
解决方案:把配置写死,不要去读取appsettings里面的配置,或者为了方便也可以创建一个类来存储读取(逼不得已的做法)
如果有人有好的方案希望留言给个好的解决方案,我现在只是能启动项目,但是项目代码感觉还是要优化,希望大佬有好的方案能提出来