从 ASP.NET Core 2.1 迁移到 2.2 踩坑总结
系统必备
根据官方文档升级对应工具
更新目标框架名字对象 (TFM)
就是在项目属性中修改目标框架为.Net Core 2.2
采用的 IIS 进程内承载模型
右键项目选择编辑XXXX.csproj,在文档描述的对应位置添加
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
更新自定义 web.config 文件
如果项目中根目录中没有这个文件即可忽略这一步。
更新包引用
同样编辑XXXX.csproj,在文档描述的对应位置添加
<PackageReference Include="Microsoft.AspNetCore.App" />
删除所有 <PackageReference Include="Microsoft.XXXX" Version="XXX" />
比如这些
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" /> <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
都需要删除,因为新版本的Microsoft.AspNetCore.App已经包含这些
重新编译项目时IDE会自动下载对应的引用包
更新 Kestrel 配置
这一步是我遇到的最大的坑!!!官网给的Demo我试了有问题,如果原来项目Program
类中有UseIISIntegration() ,则需要替换成UseIIS() ,不然会有启动错误。
意外的在ocelot文档Demo中找到了解决方案!!
**Note:** When using ASP.NET Core 2.2 and you want to use In-Process hosting, replace **.UseIISIntegration()** with **.UseIIS()**, otherwise you'll get startup errors.
总结
剩下的根据官方文档根据各自的项目做对应的修改,我自己遇到的两个问题已经写在上面了,一是更新包引用,二是更新Kestrel配置。
如果还有问题请参考官方文档
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/troubleshoot?view=aspnetcore-2.2