Net7升级到Net8相关问题

除了按照网上常规Net8升级步骤外,编译和运行都会发生一些异常和错误,代码兼容性根据提示倒是可以修改。倒是运行时错误,网上资料比较少,下面会持续登记升级过程中踩的坑:

1. MediatR 库升级到最新的12.2后,报错各种服务找不到,实际是没有DI实现:

原来注册一般这么写:

1 services.AddMediatR(Assembly.GetExecutingAssembly());

升级后改成如下:

1 services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()));

 

2. AutoMapper库升级到13.0.1后,老的 AutoMapper.Extensions.Microsoft.DependencyInjection 库就可以删除引用了。

<PackageReference Include="AutoMapper" Version="13.0.1" />
<!--<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.0" />-->

 

3. 升级到net8后,使用JWT认证的地方,一般是: AddJwtBearer(option => ...{ } ),要增加一个属性来兼容老代码:  option.UseSecurityTokenValidators = true; ,否则认证会失败:

1  option.SecurityTokenValidators.Clear();
2  option.UseSecurityTokenValidators = true;
3  option.SecurityTokenValidators.Add(new UserTokenValidation(appSetting, httpContextAccessor));
4  option.SaveToken = true;

Net8为了性能的提升,废弃了如上写法: 参考 CS0618

 兼容不是好办法,最好的还是按照建议,实现验证TokenHandlers。

 升级到Net8后,初步体验到速度确实有提升,至少打包后exe和dll都变小了,依赖ref也少了许多。其它待查问题后续更新中...

 

posted @ 2024-03-04 12:01  pccai  阅读(117)  评论(0编辑  收藏  举报