.net core 其实是自宿主性质的web应用程序,而不再是web网站,所以.net core是可以直接单独作为系统服务部署。但是实际情况中,为了同个一个端口能支持多个web应用和统一管理,还是应该与某个服务器整合,比如iis,Jexus。所以.net core 不再是由iis工作进程进行托管,而是使用自托管Web服务器(Kestrel)。iis则是作为反向代理的角色,将请求转发到Kestrel。在这里面最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。
部署之前要确保你的IIS上已经安装了AspNetCoreModule托管模块,如果没有的话,点击https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/aspnet-core-module?tabs=aspnetcore2x根据core版本,选择相应包下载安装.
发布程序,并部署网站,这一步和传统web网站没有什么不同。
设置应用程序池的.NET CLR版本为“无托管代码”,因为刚才也说了,IIS是作为一个反向代理的角色,并不需要它来托管代码
(PS 图片借用园友图,侵删)
最后,需要生产环境,需要注意在web.config文件中添加环境变量
<environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables>
具体信息可参考官方文档 https://docs.microsoft.com/en-us/aspnet/core/publishing/iis