首先先下载ASP.NET Core 模块,这个东西是为了让IIS可以跑.NetCore项目用的,安装完成后重启IIS。
然后打开你的项目,双击项目的.csproj文件,于PropertyGroup节点添加HostingModel,值为OutOfProcess,这里是为了让项目发布时,自动生成的web.config文件里指定为无托管模式。
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>
之后将项目部署至IIS,步骤如下:
- 发布你的.NetCore项目,发布配置选择Debug,不然无法命中断点,目标运行时为可移植。
- 选择IIS的应用程序池,点击添加应用程序池,名称随意,.NetClr版本选择无托管代码,托管管道模式为集成。
- 添加网站,应用程序池选择你刚才新建的那个无托管程序池。
- 启动网站后访问一次网站,查看是否成功启动网站。
最后使用VS2019,调试-附加到进程,搜索dotnet.exe,点击附加就可以了。
详细说明在微软官方文档讲的很详细了,其实就是用.NetCore应用自带的Kestrel来跑你的服务,进程外托管是为了不让服务在IIS进程内托管,这样你的项目跑起来就会单独开一个dotnet.exe进程进行运行,vs2019调试的时候单独附加到这个进程就行了,调试起来和.NetFramework唯一的区别就是需要发布一次才行。