dotnet core号称跨平台,即可以将项目部署在你喜欢的环境中(windows或linux)。曾经的dotnet framework只支持微软操作系统部署,如果想往linux上移植,将会是一件非常痛苦的事情。
部署先决条件
服务器上配置了Web服务器(IIS)角色
安装与应用程序版本相同的运行时(dotnet core runtime)
安装指定版本的HostBundle程序
部署步骤
安装HostBundle程序
官方下载指定版本HostBundle程序(以2.1版本为例),点击安装。完成后可以在IIS模块中看到名为AspNetCoreModule的模块。
https://dotnet.microsoft.com/download/dotnet/2.1你也可以在注册表中查看都安装了哪些版本的dotnetcore 运行时。查看机器上是否安装dotnet core IIS 模块,在注册表中找到以下键值。
1
2
3计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Updates\.NET Core --.netcore安装信息
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Updates\.NET --.net5的安装信息创建应用并发布
这里我就用Visual Studio 2019来创建项目,完成项目开发后,通过VS发布工具进行发布。配置文件选择dotnet版本要于IIS中安装的模块版本一致才可以。创建及发布应用也可以使用VS Code for MAC,或者使用.Net Core CLI工具,这时就体现出跨平台的优势了。
1
2
3dotnet new [templatename] --创建指定模板的dotnet core项目(console、mvc等)
dotnet publish --configuration Release --发布应用创建站点并部署
IIS上创建站点,并选择站点对应的物理路径。将步骤2中发布的项目文件拷贝至站点对应的物理路径下,完成站点部署。
常见错误及对策
如果在部署过程中出现了运行应用程序报错,可以通过参考连接中出现的常见http错误代码,进行排查修改。
复盘
本来打算写这篇博客是为了记录IIS上挂两个版本dotnet core的,但是只在一台机器上实验成功了,再另外找了两台机器按照同样的步骤安装不同版本的HostBundle程序,却未能在指定位置找到文件,所以IIS模块中无法注册相应的模块。
如果能找到这个目录 C:\Program Files\IIS\AspNetCore Module\V2
,则可以在IIS模块中,选择“配置本机模块”中注册新模块,起名 AspNetCoreModuleV2
,指向C:\Program Files\IIS\AspNetCore Module\V2\aspnetcorev2.dll
这个文件。另外一个AspNetCoreModule
注册指向C:\Windows\System32\inetsrv\aspnetcore.dll
最终放弃,简单记录IIS上部署dotnet core程序。大多参考微软官方文档就可以了,遇到疑难杂症的再发挥搜索引擎作用。就不折腾能给自己带来麻烦的事了(事实上服务器中也不建议运行多版本的dotnetcore runtime)。
接下来会探索Linux上部署、以及docker容器中部署dotnet core应用。
- 本文作者: 达文西
- 本文链接: https://edsiongithub.github.io/2021/05/31/9/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!