Я пытаюсь использовать BackgroundService - проект ядра 2.2 для asp.net, использующий шаблон проекта страницы Razor, а не MVC. Это небольшое примерное приложение заняло у меня около 1 минуты, поэтому оно не могло быть намного проще. Глядя на отладчик, я знаю, что фоновая служба запускается и пыхтит просто отлично. Но когда я пытаюсь перейти на страницу (путь «Банан»), которая требует эту службу в качестве зависимости, я получаю InvalidOperationException: Unable to resolve service for type 'WebApplication23.DumbService' while attempting to activate 'WebApplication23.Pages.BananaModel'.
Почему я не могу получить доступ к этой службе из моей модели страницы? Код на https://github.com/jmagaram/SimpleBackgroundService
У меня есть следующий сервис:
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
namespace WebApplication23
{
public class DumbService : BackgroundService
{
public DumbService()
{
}
public void QueueWork()
{
}
protected async override Task ExecuteAsync(CancellationToken cancellationToken)
{
while (!cancellationToken.IsCancellationRequested) {
await Task.Delay(TimeSpan.FromSeconds(1));
}
}
}
}
И вот где я его регистрирую:
services.AddHostedService<DumbService>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Вот модель страницы, которая ее использует:
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApplication23.Pages
{
public class BananaModel : PageModel
{
private readonly DumbService _service;
public BananaModel(DumbService service)
{
_service = service;
}
public void OnGet()
{
}
}
}