Пример:
- Для действий пользовательского контроллера: UserService (httpclient)
- Для действий пост-контроллера: PostService (httpclient)
Код: Выделить всё
startup.cs
Код: Выделить всё
services.AddHttpClient();
services.AddHttpClient();
Код: Выделить всё
public class CommandHandler : IRequestHandler
{
private readonly IUserService _userService;
public CommandHandler(IUserService userService)
{
_userService = userService;
}
public Task Handle(Command request, CancellationToken cancellationToken)
{
throw new System.NotImplementedException();
}
}
Ничего из Конструкторы, найденные с помощью
'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' типа
'xxx.Application.Services.Users.UserService', могут быть вызваны с
доступными службами и параметрами: невозможно параметр разрешения
'System.Net.Http.HttpClient httpClient' конструктора 'Void
.ctor(System.Net.Http.HttpClient,
xxx.Application.Configurations.IApplicationConfigurations,
Microsoft.Extensions.Logging.ILogger`1[xxx.Application.Services.Users.UserService])'.
Но я' В модуле autofac зарегистрированы службы:
Код: Выделить всё
public class ServiceModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(typeof(ServiceModule).Assembly)
.Where(t => t.Namespace.StartsWith("xxx.Application.Services"))
.AsImplementedInterfaces().InstancePerLifetimeScope();
}
}
Код: Выделить всё
public UserService (HttpClient httpClient, IApplicationConfigurations applicationConfig, ILogger logger)
{
_httpClient = httpClient;
_applicationConfig = applicationConfig;
_logger = logger;
_remoteServiceBaseUrl = $"{_applicationConfig.WebApiBaseUrl}";
}
- Что означает указанная выше ошибка?< /li>
Хороша ли практика использовать отдельные http-клиенты для разных контроллеров в API?
Подробнее здесь: https://stackoverflow.com/questions/587 ... th-autofac