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也少了許多。其它待查問題後續更新中...

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章