我试图通过DI在Azure函数中创建一个类型的http客户端,当我像下面这样设置它时,它没有进入lambda,因此没有设置BaseAddress。
builder.Services.AddSingleton<IService, Service>();
builder.Services.AddHttpClient<IService, Service>(client => {
client.BaseAddress = new Uri("http://www.google.com");
});
在为客户端创建方法的服务中,它像这样消费:
public Service(HttpClient client){
然后在其他类中我在Startup中注入:
public AClass(Service service){
我遵循官方文档,有什么问题吗?
以下代码段
builder.Services.AddHttpClient<IService, Service>(client => {
client.BaseAddress = new Uri("http://www.google.com");
});
将已经将服务添加到集合中。我建议去掉单例
builder.Services.AddSingleton<IService, Service>();
最后,服务注册为抽象,但您试图注入实现。
public AClass(Service service){
我建议在需要的地方注入抽象
public AClass(IService service){ //<-- NOTE THE INTERFACE