URL веб-сервера доступа к .NET Core 3.0 IHostedService - схема, хост, порт и т. Д. - PullRequest
0 голосов
/ 18 октября 2019

Вопрос, который у меня есть, прост. Я хочу получить доступ к URL-адресу сервера в моем IHostedService.

. Я не могу найти способ сделать это. Там нет никаких запросов, поэтому я не могу использовать свойство IHttpContextAccessor.

IServer, у меня нет адресов, и у меня нет вариантов.

Я не хочужестко закодировать URL-адрес сервера в конфигурации.

Версия используемого ядра .NET - 3.0.

Ответы [ 2 ]

1 голос
/ 14 ноября 2019

Вы можете зарегистрировать свой размещенный сервис с помощью инфраструктуры внедрения зависимостей в Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IHostedService, MyHostedService>();
}

Затем вы можете внедрить IServer в свой размещенный сервис и получить адреса, используя IServerAddressesFeature:

public class MyHostedService : IHostedService
{
    private readonly IServer _server;

    public MyHostedService(IServer server)
    {
       _server = server;
    }

    public async Task StartAsync(CancellationToken cancellationToken)
    {
       var features = _server.Features;
       var addresses = features.Get<IServerAddressesFeature>();
       var address = addresses.Addresses.FirstOrDefault(); // = http://localhost:5000
    }
}
0 голосов
/ 14 ноября 2019

Вы не можете получить адрес / URL-адрес с вашего сервера, пока вы полностью не запустите сервер.

Если вам нужен ваш локальный адрес, найдите его (программно или иным образом) из ./Properties/launchSettings.json.

Если вам нужен адрес в реальной среде, вам нужно дождаться загрузки сервера.

...