【问题标题】:Unable to resolve service for type in Azure Microservice无法解析 Azure 微服务中的类型的服务
【发布时间】:2019-04-10 00:01:23
【问题描述】:

这是我第一次尝试使用 Azure Service Fabric 和 .Net Core 创建微服务

在调试模式下它工作正常,我可以使用 Postman 访问 API 端点。但是,当我在将 Service Fabric 应用程序发布到 Service Fabric 本地集群(单节点)后尝试访问相同的端点时,它会在下面抛出异常

在尝试激活“UrlShortener.WebService.Controllers.UrlShortenerController”时,无法解析“UrlShortener.Services.Contracts.IUrlService”类型的服务。

我不确定这里缺少什么。

这是我的代码 sn-p

控制器

 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"));
        }

【问题讨论】:

  • 在您的代码中没有发现任何问题!它的神秘!
  • UrlService的类定义是什么?是否实现IUrlService

标签: c# azure asp.net-core microservices azure-service-fabric


【解决方案1】:

抛出异常是因为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"));
}    

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2022-01-10
    • 2020-03-13
    • 2019-02-10
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多