Несколько веб-API и распространенное использование зависаний в .netC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Несколько веб-API и распространенное использование зависаний в .net

Сообщение Anonymous »

У меня есть приложение, содержащее несколько проектов веб-API в .net. Я использую MongoDb. Теперь я хочу добавить в это приложение обычное зависание. Другими словами, будет одна база данных Hangfire, и все проекты веб-API будут управлять заданиями через эту базу данных. Для этого я добавил расширение в свою общую библиотеку классов.

Common/HangfireExtensions.cs

Код: Выделить всё

public static class HangfireExtensions
{
public static IServiceCollection AddHangfireServices(this IServiceCollection services, string mongoConnectionString, string dbName, string projectName)
{
GlobalJobFilters.Filters.Add(new AppJobFilterAttribute(projectName));

services.AddHangfire(config =>
{
config.UseMongoStorage(mongoConnectionString, dbName, new MongoStorageOptions
{
MigrationOptions = new MongoMigrationOptions
{
MigrationStrategy = new MigrateMongoMigrationStrategy(),
BackupStrategy = new NoneMongoBackupStrategy()
},
CheckConnection = true,
CheckQueuedJobsStrategy = CheckQueuedJobsStrategy.TailNotificationsCollection
});
});

services.AddHangfireServer(options =>
{
options.Queues = new[] { Constants.AppNumber.ToString() };
});
return services;
}
}
Здесь, используя фильтр, я хотел, чтобы каждый проект веб-API выполнял задания, которые я в нем определил. Но даже несмотря на то, что я использую фильтр, я все равно получаю подобную ошибку, поскольку проекты веб-API пытаются запускать задания, которые не определены в других проектах:

Код: Выделить всё

 Recurring job 'AJobAsync' can't be scheduled due to an error and will be disabled.
Hangfire.Common.JobLoadException: Could not load the job. See inner exception for the details.
---> System.IO.FileNotFoundException: Could not load file or assembly 'A.API, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
Мои коды в проектах A и B следующие:

A. API/Program.cs

Код: Выделить всё

builder.Services.AddHangfireServices(connectionString, hangfireDatabase, "A.API");
app.UseHangfireDashboard();

var jobService = app.Services.GetRequiredService();
RecurringJobs.Initialize(jobService);
A.API/RecurringJobs.cs

Код: Выделить всё

public static class RecurringJobs
{
public static void Initialize(IJobService service)
{
RecurringJob.RemoveIfExists(nameof(service.AJobAsync));

RecurringJob.AddOrUpdate(
recurringJobId: nameof(service.AJobAsync),
methodCall: () => service.AJobAsync(),
cronExpression: "0 */1 * ? * *", // Every 1 minute
queue: Constants.AppNumber.ToString()
);
}
}
A.API/IJobService.cs

Код: Выделить всё

public interface IJobService
{
Task AJobAsync();
}
Предположим, что в этой структуре также есть B.API. Для него также определены определенные задания.
Когда эти два проекта выполняются одновременно, я получаю упомянутую выше ошибку, поскольку он пытается выполнить задания, определенные в них обоих. Моя просьба состоит в том, чтобы только проект A мог выполнять задания, определенные в проекте A, и только проект B должен выполнять задания, определенные в проекте B.

Подробнее здесь: https://stackoverflow.com/questions/790 ... age-in-net
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Несколько зависаний в представлении коллекции
    Anonymous » » в форуме IOS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Несколько зависаний в представлении коллекции
    Anonymous » » в форуме IOS
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Несколько зависаний в представлении коллекции
    Anonymous » » в форуме IOS
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • GroupBy pandas DataFrame и выберите наиболее распространенное значение.
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Наименьшее распространенное множество для более чем двух чисел
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»