C# Azure函数中具有依赖项注入的HttpClient
表示使用builder.Services.AddHttpClient进行注册 HttpClient,但是我可以在没有这个的情况下解析HttpClient 我有一家小公司,只注册MyService:C# Azure函数中具有依赖项注入的HttpClient,c#,.net-core,azure-functions,C#,.net Core,Azure Functions,表示使用builder.Services.AddHttpClient进行注册 HttpClient,但是我可以在没有这个的情况下解析HttpClient 我有一家小公司,只注册MyService: public class Startup : FunctionsStartup { public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddTransient
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddTransient<MyService>();
}
}
在函数中,我想解析HttpClient和MyService,这段代码可以正常工作
public class Function
{
public Function(MyService service, HttpClient client)
{
}
[FunctionName("func")]
public async Task<IActionResult> Update(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
HttpRequest request,
ILogger logger)
{
return new OkObjectResult("Hello");
}
}
谁在哪里注册HttpClient?
我应该使用builder.Services.AddHttpClient吗?这不是多余的吗?
你说得对。您首先需要向it注册服务:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
//Register HttpClientFactory
builder.Services.AddHttpClient();
builder.Services.AddTransient<MyService>();
}
}
如果您的服务将使用HttpClientFactory,则在服务之前进行注册非常重要。因此,当MyService实例依赖关系得到解决时,DI容器中已经有一条HttpCliendFactory的记录
然后,Function.cs类将是:
public class Function
{
private IHttpClientFactory _httpClientFactory;
private MyService _myService;
public Function(MyService myService, IHttpClientFactory client)
{
_myService = myService;
_httpClientFactory = httpClientFactory;
}
[FunctionName("func")]
public async Task<IActionResult> Update(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
HttpRequest request,
ILogger logger)
{
//How to use example
var client = _httpClientFactory.CreateClient();
return new OkObjectResult("Hello");
}
}
HttpClient当然可以在没有客户端工厂的情况下使用,但是如果您从HttpClientFactory生成HttpClient对象,您将能够更好地对HttpClient资源进行开箱即用的管理 你说得对。您首先需要向it注册服务:
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
//Register HttpClientFactory
builder.Services.AddHttpClient();
builder.Services.AddTransient<MyService>();
}
}
如果您的服务将使用HttpClientFactory,则在服务之前进行注册非常重要。因此,当MyService实例依赖关系得到解决时,DI容器中已经有一条HttpCliendFactory的记录
然后,Function.cs类将是:
public class Function
{
private IHttpClientFactory _httpClientFactory;
private MyService _myService;
public Function(MyService myService, IHttpClientFactory client)
{
_myService = myService;
_httpClientFactory = httpClientFactory;
}
[FunctionName("func")]
public async Task<IActionResult> Update(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
HttpRequest request,
ILogger logger)
{
//How to use example
var client = _httpClientFactory.CreateClient();
return new OkObjectResult("Hello");
}
}
HttpClient当然可以在没有客户端工厂的情况下使用,但是如果您从HttpClientFactory生成HttpClient对象,您将能够更好地对HttpClient资源进行开箱即用的管理 对你有用吗?你需要进一步的帮助吗?对你有用吗?你需要进一步的帮助吗?