Как передать аргументы приложению ASP .NET Core из службы WIndows, которая его размещает - PullRequest
0 голосов
/ 10 сентября 2018

Я создал приложение ASP .NET Core 2.1, размещенное в службе Windows, следуя этому руководству https://docs.microsoft.com/en-gb/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1

Когда я запускаю службу Windows, я программно передаю IP-порт в качестве аргумента, потому что я хочу изменить используемый applicationUrl в launchsettings.json.

Ниже я сообщаю код, с которого запускаю услугу

ServiceController controller = ...;
// Do something
args = new string[]{8080};
controller.Start(args);

В моем проекте ASP .Net Core у меня есть класс CustomWebHostService, где я получаю предыдущий аргумент в методе OnStarting ().

public class CustomWebHostService : WebHostService
{
    ////private Microsoft.Extensions.Logging.ILogger _logger;

    /// <summary>
    /// The <see cref="Logger"/> object
    /// </summary>
    private static Logger _logger;

    public CustomWebHostService(IWebHost host) : base(host)
    {
        ////_logger = host.Services.GetRequiredService<ILogger<CustomWebHostService>>();

        _logger = LogManager.GetCurrentClassLogger();
    }

    protected override void OnStarting(string[] args)
    {
        ////_logger.LogDebug("OnStarting method called.");
        _logger.Info("OnStarting method called.");

        // TODO Change launchsettings with the IP Port


        base.OnStarting(args);
    }

    protected override void OnStarted()
    {
        ////_logger.LogDebug("OnStarted method called.");
        _logger.Info("OnStarted method called.");

        base.OnStarted();
    }

    protected override void OnStopping()
    {
        ////_logger.LogDebug("OnStopping method called.");
        _logger.Info("OnStopping method called.");

        base.OnStopping();
    }
}

Теперь я должен передать этот аргумент моему сборщику (интерфейс IWebHostBuilder) и обновить мою конфигурацию.

builder.UseUrls(String.Format("http://*:{0};http://localhost:{0}", myPort));

Как я могу это сделать?

Спасибо.

...