Как сделать http-запрос в классе запуска для вызова действия http get в том же asp. net проекте web api? - PullRequest
0 голосов
/ 04 марта 2020

Мне нужно создать запрос http в классе запуска для вызова действия http get в том же asp. net проекте web api.

1 Ответ

0 голосов
/ 05 марта 2020

Мне нужно создать запрос 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();

    // ...
}

Результат теста

enter image description here

...