Как получить URL-адрес запроса при запуске приложения
Я пытаюсь найти URL-адрес запроса (в частности, домен) при запуске приложения в моем запуске.cs файл..
public Startup(IHostingEnvironment env)
{
Configuration = new Configuration().AddEnvironmentVariables();
string url = "";
}
мне это нужно при запуске.cs-файл, потому что он определит, какие переходные службы добавляются позже в классе запуска, в методе ConfigureServices.
каков правильный способ получения этой информации?
2 ответов
к сожалению, вы не можете получить URL-адрес хостинга вашего приложения, так как этот бит контролируется IIS/WebListener и т. д. и не поступает непосредственно в приложение.
теперь хорошая альтернатива-предоставить каждому из ваших серверов ASPNET_ENV
переменная окружения, чтобы затем отделить вашу логику. Вот несколько примеров того, как его использовать:
Автозагрузка.cs:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
// Will only get called if there's no method that is named Configure{ASPNET_ENV}.
}
public void ConfigureDev(IApplicationBuilder app)
{
// Will get called when ASPNET_ENV=Dev
}
}
вот еще один пример, когда ASPNET_ENV=Dev и мы хотим сделать разделение классов вместо разделения методов:
Автозагрузка.cs:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
// Wont get called.
}
public void ConfigureDev(IApplicationBuilder app)
{
// Wont get called
}
}
StartupDev.cs
public class StartupDev // Note the "Dev" suffix
{
public void Configure(IApplicationBuilder app)
{
// Would only get called if ConfigureDev didn't exist.
}
public void ConfigureDev(IApplicationBuilder app)
{
// Will get called.
}
}
надеюсь, что это помогает.
это не даст вам домен, но может помочь, если вы просто работаете на порту и вам нужен доступ к нему:
var url = app.ServerFeatures.Get<Microsoft.AspNetCore.Hosting.Server.Features.IServerAddressesFeature>().Addresses.Single();
Не уверен, что произойдет, если у вас есть несколько адресов, связанных.