gpt4 book ai didi

c# - 无法解析 Azure 微服务中的类型的服务

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:27 25 4
gpt4 key购买 nike

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

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

Unable to resolve service for type 'UrlShortener.Services.Contracts.IUrlService' while attempting to activate 'UrlShortener.WebService.Controllers.UrlShortenerController'.

我不确定这里缺少什么。

这是我的代码片段

Controller

 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 未在 Controller 构造函数中解析,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"));
}

关于c# - 无法解析 Azure 微服务中的类型的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55591329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com