Мне нужно создать запрос http в классе запуска для вызова действия http get в том же asp. net проекте веб-API
Вы можете попытаться внедрить IHostApplicationLifetime
в Configure (), затем запишите обратный вызов для ApplicationStarted
, который будет запущен, когда хост приложения полностью запущен, и выполните http-запрос в методе обратного вызова, как показано ниже.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime lifetime)
{
//code logic here
IHttpClientFactory _clientFactory = app.ApplicationServices.GetService(typeof(IHttpClientFactory)) as IHttpClientFactory;
lifetime.ApplicationStarted.Register(OnApplicationStartedAsync(_clientFactory).Wait);
//...
}
private async Task<Action> OnApplicationStartedAsync(IHttpClientFactory httpClientFactory)
{
var client = httpClientFactory.CreateClient();
var request = new HttpRequestMessage(HttpMethod.Get,
"https://localhost:44377/api/values");
var response = await client.SendAsync(request);
if (response.IsSuccessStatusCode)
{
var result = await response.Content.ReadAsStringAsync();
}
return null;
}
Вызов AddHttpClient
для регистр IHttpClientFactory
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient();
// ...
}
Результат теста