8.6K Star 14.2K Fork 4.2K

GVPdotNET China/Furion

 / 详情

4.5.3-4.5.5 3个版本均存在App.GetOptions异常,退至4.5.2解决

已完成
创建于  
2022-10-02 23:44

💢 特别说明:如果 Issue 没有严格按照模板编写且未提供测试源码下载或 Git 测试仓库地址,则视为无效 Issue,将无法得到答复。

Furion 版本号

哪个版本号?
Furion.Pure v4.5.3/4.5.4/4.5.5

.NET SDK 版本号

  • .NET5
  • .NET6
  • .NET7

Web 项目类型

  • WebApi
  • Mvc
  • Razor Pages
  • Blazor Server
  • MinApp

操作系统和版本

  • Windows(版本)
  • Linux(版本)
  • MacOS(版本)
  • 其他(版本)

代码环境

  • 开发环境(Development)
  • 生产环境(Production)
  • 测试环境(Tests/单元测试/集成测试 )

描述你的问题

发生了什么?
输入图片说明

异常堆栈信息

异常堆栈是什么?


测试项目代码

⚠⚠ 必须提供完整可运行且包含错误的 Git 仓库 DEMO,DEMO 提供最简单的错误逻辑代码,否则将无法得到答复。⚠⚠

您的代码下载地址?
https://gitee.com/zuohuaijun/Admin.NET/tree/next/

数据库信息

  • Sqlite
  • SqlServer
  • Mysql
  • Oracle
  • PGSql
  • Firebird
  • Cosmos

期待结果

期待的结果是?
没有期待,仅为反馈报障。

评论 (14)

月半弯 创建了任务 3年前

Furion v4.5.4 版本开始彻底禁止错误行为,主机未启动的时候禁止构建服务,包括选项,因为这是错误的行为,被大家错误的用了两年!

输入图片说明

https://furion.baiqian.ltd/docs/upgrade


在启动时请使用 App.GetConfig<选项类型>("配置的Key", true) 替代。

百小僧 任务状态待办的 修改为已完成 3年前

Furion 从未教过大家在启动的时候使用 App.GetOptions,包括 Furion 的源码所有模块都是使用 App.GetConfig 在启动的时候获取配置。

所以我不知道是谁或者哪个项目误导了大家启动的时候去构建服务了!IOptions 就是服务,可以看看 Furion 的源码:

输入图片说明

输入图片说明

只要启动的时候获取配置,都是 App.GetConfig 而不是 App.GetOptions

输入图片说明

输入图片说明


由于 Gitee 审核机制关闭了 Gitee Pages,所以之前的文档 https://dotnetchina.gitee.io/furion/ 无法更新了,现在已经使用自己的服务器部署了:https://furion.baiqian.ltd/

输入图片说明

国庆假上班后会联系官方处理,关闭旧文档并自动跳转到新文档。

Admin.Net项目(该项目是基于Furion的),一直运行正常,更新Furion后发现如上问题。
检出过其多个版本,一直是这样使用,所以突然不行,以为是bug...故速来报障。

好的,知道是什么原因了。不过使用上感觉还是原来的写法好一些...

没想到这么快就有回复,辛苦了!长假,好好休息!

974299 monksoul 1578937227 百小僧 拥有者
回复 月半弯
3年前

在过去 App.GetOptions<TOptions> 内部实际上就是 App.GetService<IOptions<TOptions>>().Value 的操作,但是在 Web 主机未启动时服务容器还未初始化,如果使用 App.GetOptions 就会强制性构建一个全新的服务容器,这是不正确的。

Furion 从未这样用过,当然我也有责任,因为文档也从未提及过,导致大家误用了,所以我刚刚已经更新了文档,如果需要在启动的时候获取配置或者选项,可以通过 App.GetConfig<TOptions>("配置key") 的方式,第二个参数 true 时解析 PostConfigure 默认值的意思,通常也设置未 true

由于很多项目大量的错误使用导致升级出现问题,迫于无奈,新版本做了兼容:https://gitee.com/dotnetchina/Furion/commit/f9a6587e3f7893db88c905cf77c3c4ebed39b73c

也就是即使错误使用,在新版本也能“纠正”过来,太难了~~

月半弯-ACore 月半弯
回复 百小僧 拥有者
3年前

这恰恰也说明Furion的受众越来越多了,感谢你的巨大精力投入和辛苦付出!

百小僧 里程碑设置为v4.5.6 3年前
百小僧 修改了描述 3年前
百小僧 修改了标题 3年前
百小僧 关联了任务(普通)📝 发布 Furion v4.5.6 版本 3年前

Furion v4.5.6 版本发布,底层处理了升级异常问题,也就是保持原来的代码即可~~

给个告警日志提示下

害,我都全部改完了....

百小僧 关联了任务(普通)📝 发布 Furion v4.5.7 版本 3年前

项目启动的时候用了 App.GetService(),这种怎么处理

974299 monksoul 1578937227 百小僧 拥有者
回复 ivan
3年前

启动在 Configure 里面执行,而不是 ConfigureServices

v4.5.7.1 版本发布,该功能恢复了~~哎。

百小僧 关联了任务(普通)📝 发布 Furion v4.5.8 版本 3年前
百小僧 关联了任务(普通)📝 发布 Furion v4.5.9 版本 3年前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(5)
974299 monksoul 1578937227 月半弯-ACore chrcao-cc00 5128606 net 18k 1725500629 ivan-donet6
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助