Случайно возникающая проблема: «Не удается разрешить службу для типа (...)» с Hangfire - PullRequest
0 голосов
/ 24 апреля 2020

Я столкнулся со странной проблемой с Hangfire. Иногда я получаю (совершенно случайно) сообщение об ошибке «Не удается разрешить службу для типа« AW.Services.Interfaces.ISmsService »при попытке активировать« AW.Services.Jobs.SendSmsJob ». Когда я нажимаю кнопку «Рекви» на панели инструментов в этом неуспешном задании, оно либо снова завершается сбоем, либо завершается успешно sh. Это происходит действительно случайно, и я понятия не имею, что происходит.

Я зарегистрировал свой интерфейс в Io C, конечно, так: services.AddTransient<ISmsService, SmsService>();.

Я используя следующие версии пакетов:

  • . NET Core 3.1
  • Hangfire v1.7.9
  • Hangfire.AspNetCore v1.7.9
  • Hangfire .Console v1.4.2
  • Hangfire. PostgreSql v1.6.4.1

Конфигурация моего зависания в файле startup.cs следующая:

services.AddHangfire(config =>
{
    config.UsePostgreSqlStorage(Configuration["AW_API_DB_CONNECTIONSTRING"]);
    config.UseConsole();
});
GlobalConfiguration.Configuration.UseSerializerSettings
(
    new JsonSerializerSettings
    {
        ReferenceLoopHandling = ReferenceLoopHandling.Ignore
    }
);

(...)

app.UseHangfireServer(new BackgroundJobServerOptions
{
       WorkerCount = backgroundProcessingWorkersCount
});

app.UseHangfireServer(new BackgroundJobServerOptions
{
    WorkerCount = backgroundProcessingWorkersCount,
    Queues = new[] { JobQueueTypes.Transactions }
});
app.UseHangfireDashboard("/dashboard", new DashboardOptions
{
    Authorization = new[] { new AgriWalletDashboardAuthFilter() },
    I

Ниже я скопировал весь журнал с панели мониторинга Hangfire:

Не удалось разрешить службу для типа 'AW.Services.Interfaces.ISmsService' при попытке активировать 'AW.Services.Jobs.SendSmsJob'. System.InvalidOperationException: невозможно разрешить службу для типа «AW.Services.Interfaces.ISmsService» при попытке активировать «AW.Services.Jobs.SendSmsJob». в Microsoft.Extensions.DependencyInjection.ActivatorUtilities.ConstructorMatcher.CreateInstance (поставщик IServiceProvider) в Microsoft.Extensions.DependencyInjection.ActivatorUtilities.CreateInstance (поставщик IServiceProvider, параметры типа instanceType, Object [] параметры) контекст объекта [] .JPF). в Hangfire.Server. Hangfire.Server.BackgroundJobPerformer.PerformJobWithFilters (контекст PerformContext, фильтры IEnumerable`1) в Hangfire.Server.BackgroundJobPerformer.Perform (контекст PerformContext) в контексте Hangfire.Server.Worker.PerformJob (контекстная работа * ISC) 1027 *

1 Ответ

1 голос
/ 29 апреля 2020

Миграция с netcore2 на netcore3 может вызвать проблемы с внедрением зависимостей. Пожалуйста, проверьте проект Program.cs и Startup.cs классы

https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...