Это моя первая попытка создания микросервисов с использованием Azure Service Fabric и .Net Core
. В режиме отладки все работает нормально, и я могу достичь конечных точек API с помощью Postman.Однако, когда я пытался достичь тех же конечных точек после публикации приложения Service Fabric в локальном кластере Service Fabric (один узел), он выдает исключение ниже
Невозможно разрешить службу для типа ' UrlShortener.Services..Contracts.IUrlService 'при попытке активировать' UrlShortener.WebService.Controllers.UrlShortenerController '.
Я не уверен, чего здесь не хватает.
Вот мой фрагмент кода
Контроллер
public class UrlShortenerController : ControllerBase
{
private readonly IUrlService _urlService;
public UrlShortenerController(IUrlService urlService)
{
_urlService = urlService;
}
}
Сервис
public class UrlService : EntityService<Url>, IUrlService
{
private readonly IUnitOfWork _unitOfWork;
private readonly IUrlRepository _repo;
private readonly IOptions<ShortenUrlConfig> _config;
public UrlService(IUnitOfWork unitOfWork, IUrlRepository repo, IOptions<ShortenUrlConfig> config)
: base(unitOfWork, repo)
{
_unitOfWork = unitOfWork;
_repo = repo;
_config = config;
}
}
Расширение обслуживания
public static IServiceCollection RegisterCustomServices(this IServiceCollection services)
{
services.AddScoped<IUrlService, UrlService>();
return services;
}
public static IServiceCollection RegisterRepositories(this IServiceCollection services)
{
services.AddScoped<IUrlRepository, UrlRepository>();
return services;
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.RegisterCustomContracts();
services.RegisterCustomServices();
services.RegisterRepositories();
// configure the system messages
services.Configure<ShortenUrlConfig>(Configuration.GetSection("ShortenUrlConfig"));
services.AddEntityFramework(Configuration.GetConnectionString("TestDBContext"));
}