Активатор для IPStackService
(отражение кода) не может найти HttpClient
в коллекции DI, поэтому вы получили исключение (специально для services.AddTransient<IIPStackService, IPStackService>()
).
Кстати, вы добавилиуслуга IPStackService
дважды в вашей коллекции DI:
services.AddHttpClient<IPStackService>(...);
. services.AddTransient<IIPStackService, IPStackService>()
;
Вам нужен только один, и так какесли вы используете типизированный клиент, вы можете решить свою проблему, удалив вторую и оставив первую, и чуть-чуть изменив первую, добавив контракт к реализации следующим образом:
services.AddHttpClient<IIPStackService, IPStackService>(c =>
{
c.BaseAddress = new Uri(Configuration["IPStackURL"]);
});
The AddHttpClient
позаботится о привязке HttpClinet
к вашему сервису.
И если вы хотите использовать services.AddTransient<IIPStackService, IPStackService>();
вместо services.AddHttpClient
, то вам нужно добавить HttpClinet
кВаша коллекция DI как:
services.AddTransient<HttpClient>();