Не удалось разрешить службу для типа в микросервисе Azure - PullRequest
2 голосов
/ 09 апреля 2019

Это моя первая попытка создания микросервисов с использованием 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"));
        }

1 Ответ

0 голосов
/ 09 апреля 2019

Исключение вызвано тем, что urlService не был разрешен в конструкторе контроллера, UrlShortenerController(IUrlService urlService):

Я предлагаю позвонить services.AddMvc() Метод после регистрации услуг, как это:

public void ConfigureServices(IServiceCollection services)
{
     services.RegisterCustomContracts();
     services.RegisterCustomServices();
     services.RegisterRepositories();
     services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

     // configure the system messages
     services.Configure<ShortenUrlConfig>(Configuration.GetSection("ShortenUrlConfig"));
     services.AddEntityFramework(Configuration.GetConnectionString("TestDBContext"));
}    
...