ASP.NET Core 2 Web API部署为Windows服务启动失败问题排查
ASP.NET Core 2 Web API部署为Windows服务失败的排查与解决
我最近碰到了个挺闹心的问题:用Visual Studio模板创建的、目标框架设为.NET Framework 4.6.1的ASP.NET Core 2 Web API,部署成Windows服务后一启动就报错,事件查看器里全是异常信息。之前我部署ASP.NET Core 1.0版本的Web API成Windows服务从来没翻过车,这次卡了好久才找到症结。
问题场景
- 基于Visual Studio默认模板创建ASP.NET Core 2 Web API项目
- 修改
Program.cs的Main方法适配Windows服务部署(和之前Core 1.0的可行写法一致) - 部署到Windows服务器后,启动服务直接失败,事件查看器抛出异常
排查过程
一开始我死磕Program.cs里的服务启动代码,反复核对甚至把Core 1.0里能正常跑的代码搬过来测试,结果还是不行。后来把项目日志级别拉到最详细,也没抓到有效线索,直到我突然反应过来:会不会是服务器的依赖环境出问题了?
问题根源
折腾大半天终于搞明白,托管服务器上压根没装对应的.NET Framework 4.6.1运行环境!虽然ASP.NET Core 2支持以.NET Framework为目标框架,但运行时依然依赖对应版本的.NET Framework。之前部署Core 1.0时服务器刚好已经装过适配的框架,这次新服务器遗漏了这关键一步。
解决步骤
- 下载.NET Framework 4.6.1的离线安装包(避免网络波动导致安装失败)
- 在托管服务器上运行安装包,完成后建议重启服务器
- 重新启动Windows服务,这次就能正常运行了
小提示
以后再遇到类似部署失败的情况,可以优先排查服务器的依赖环境:
- 针对以.NET Framework为目标的ASP.NET Core项目,确认服务器安装了对应版本的.NET Framework
- 针对以.NET Core为目标的项目,确认安装了对应的.NET Core Runtime或SDK
内容的提问来源于stack exchange,提问作者Nicolas Boisvert
相关产品推荐
相关产品推荐

