本文实例环境及版本Win10、.NetCore3.1
一、概述
与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将HTTP响应数据重新回写到IIS中,最终转达到不同的客户端(浏览器,APP,客户端等)。而配置文件和过程都会由些许调整,中间最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。
部署之前要确保你的IIS上已经安装了AspNetCoreModule托管模块,如果没有的话,可以去 https://dotnet.microsoft.com/download/dotnet 查看并选择版本下载。
下载完成后安装即可。安装完成后在IIS中的模块中会看到 AspNetCoreModuleV2。
此处说明一下:
AspNetCoreModule(版本1)是一个IIS模块,它允许IIS运行ASP.NETCORE 1.x和2.x应用程序,当它们在.NetCore1.x和2.x(但不是.NetCore3.x和更高版本)中运行时,也可以在.NET框架上运行,而不是在.NetCore上运行。此版本在2019年1月停止使用并从ASP.NETGitHub repo中删除。今天使用V1的唯一原因是,如果您仍在运行.NetCore1.x应用程序。
AspNetCoreModuleV2 支持.NetCore 2.0及更高版本(包括.NetCore3.x、.NET 5、.NET 6等)。它还支持比V1更多的功能(例如自定义脱机消息)。
二、发布项目
发布到指定目录下。然后再IIS中新建一个应用程序池,注意选择无托管代码。
然后添加应用程序,选择项目的发布位置。具体的配置跟.NET Framework 一样,不再赘述。
才疏学浅,相关文档等仅供自我总结,如有相关问题可留言交流谢谢。