从 ASP.NET Core 2.1 迁移到 2.2 踩坑总结
程序员文章站
2022-04-09 09:18:00
500.30 ANCM In-Process Handler Load Failure ......
官方迁移文档:
系统必备
根据官方文档升级对应工具
更新目标框架名字对象 (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() ,不然会有启动错误。
意外的在文档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配置。
如果还有问题请参考官方文档