8.7K Star 14.3K Fork 4.2K

GVPdotNET China/Furion

 / 详情

Worker Service 项目发布后不能自动注册 Worker类 services.AddHostedService<Worker>()

已完成
创建于  
2021-07-07 13:17

特别说明:如果 Issue 报告为问题且开发成员回复确认问题之后但三天内都不能得到反馈,则视为无效Issue。

Furion 版本号

2.11.6


Web 项目类型

Worker Service 项目


描述你的问题

Worker Service 项目 在vs2019 发布后运行,不能自动注册 Worker类 (services.AddHostedService()),
输入图片说明
输入图片说明
输入图片说明

注释 services.AddHostedService() 后 Worker 不启动
输入图片说明
输入图片说明

异常堆栈信息

异常堆栈是什么?


代码或代码仓库

经调试
public static IServiceCollection AddAppHostedService(this IServiceCollection services)
{
// 获取所有 BackgroundService 类型
var backgroundServiceTypes = App.EffectiveTypes.Where(u => typeof(BackgroundService).IsAssignableFrom(u));
var addHostServiceMethod = typeof(ServiceCollectionHostedServiceExtensions).GetMethods(BindingFlags.Static | BindingFlags.Public)
.Where(u => u.Name.Equals("AddHostedService") && u.IsGenericMethod && u.GetParameters().Length == 1)
.FirstOrDefault();

        foreach (var type in backgroundServiceTypes)
        {
            addHostServiceMethod.MakeGenericMethod(type).Invoke(null, new object[] { services });
        }

        return services;
    }

backgroundServiceTypes 返回为空;


数据库信息

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

期待结果

期待的结果是?


评论 (2)

xbstu 创建了任务 4年前
xbstu 关联仓库设置为dotNET China/Furion 4年前
xbstu 修改了描述 4年前
xbstu 修改了描述 4年前
展开全部操作日志

问题确认,感谢反馈和给出解决方案:

// 读取项目程序集或 Furion 官方发布的包,或手动添加引用的dll,或配置特定的包前缀
            var scanAssemblies = dependencyContext.RuntimeLibraries
                .Where(u =>
                       (u.Type == "project" && !excludeAssemblyNames.Any(j => u.Name.EndsWith(j))) ||
                       (u.Type == "package" && (u.Name.StartsWith(nameof(Furion)) || supportPackageNamePrefixs.Any(p => u.Name.StartsWith(p)))) ||
                       (settings.EnabledReferenceAssemblyScan == true && u.Type == "reference"))    // 判断是否启用引用程序集扫描
                .Select(u => AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(u.Name)));

            IEnumerable<Assembly> externalAssemblies = Array.Empty<Assembly>();

将过去的 .CompileLibraries 改为 .RuntimeLibraries 即可。

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

今天发布

百小僧 负责人设置为百小僧 4年前
百小僧 添加了
 
漏洞
标签
4年前
百小僧 添加了
 
优化
标签
4年前
百小僧 里程碑设置为Furion 2021 4年前
百小僧 关联分支设置为master 4年前
百小僧 计划截止日期设置为2021-07-07 4年前
百小僧 计划开始日期设置为2021-07-07 4年前
百小僧 优先级设置为严重 4年前
百小僧 关联分支master 修改为未关联 2年前

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
974299 monksoul 1578937227 8158282 xbstu 1622721486
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助