[ASP.net Core] 部署 ASP.net Core 到 IIS 个人踩雷合集

Deploy ASP.net Core to IIS


最近好不容易把ASP.net Core网站 (2.1 version) 部署到客户端

记录一下自己踩雷的过程,未来回头Copy Paste解决方案

网站要先经过发行Publish动作,像以往.Net Framework时期,直接复制文件到正式机部署是行不通的

默认发布的设定是“Framework 依存性”、“便携式”,产出来的文件数量、大小比较少

不过正式机得先安装:ASP.NET Core Runtime & Hosting Bundle,载点列表:.NET Download Archives

让 IIS 出现 ASPNETCoreModule模块可以处理 ASP.net Core 网站,个人猜测未来Windows Server 2016之后的操作系统IIS如果有内建的话,或许此步骤可省略(?)

SDK要不要安装我不清楚,我开发的是ASP.net Core 2.1 网站

但是我乱 try 一通,把.Net Core最新版 2.2 SDK、Runtime和.Net Core 2.1 SDK、Runtime全都安装,所以没得细追XD

微软官网有ASP.net Core部署到IIS的教学: 在使用 IIS 的 Windows 上装载 ASP.NET Core   

※网络上也有热心网友,写得很详细的部署文章:IIS - 运行 ASP.NET Core 网站

如果网站执行遇到这样的错误↓

HTTP Error 502.5 - Process Failure

通常和执行环境的设定有关

微软有篇文章:针对 IIS 上的 ASP.NET Core 进行疑难排解

照着文章做,可以从各个地方看到错误Log,例如:Web.config如何开启执行错误Log,Windows的应用程序事件检视器

我部署卡关是卡在“faield to start process with commandline 'dotnet .xxx.dll',ErrorCode = '0x80070002' : 0”

“没有与命令 "dotnet-.xxx.dll" 相符的可可执行文件”

后来解决方式是把Web.config里的processPath改成绝对路径才解决

变成下面↓

至于读取不到 processPath="dotnet" 的环境变量,后来我查了网络,似乎安装完Runtime & Hosting Bundle后,Server还要重新开机(让电脑读取得到dotnet环境变量)

由于客户端的主机还有其他服务在跑,我才没重开机,才造成上述发生的错误吧

.Net Core 3 也快推出,未来还有遇到什么地雷,再补上~