如何在应用程序启动时获取请求 URL
How to get the request URL on application startup
我正在尝试在应用程序启动时在我的 Startup.cs 文件中找到请求 URL(特别是域)..
public Startup(IHostingEnvironment env)
{
Configuration = new Configuration().AddEnvironmentVariables();
string url = "";
}
我在 Startup.cs 文件中需要它,因为它将确定稍后在启动 class 的 ConfigureServices 方法中添加哪些临时服务。
获取此信息的正确方法是什么?
很遗憾,您无法检索应用程序的托管 URL,因为该位由 IIS/WebListener 等控制,不会直接流向应用程序。
现在一个不错的选择是为每个服务器提供一个 ASPNET_ENV
环境变量,然后分离您的逻辑。以下是有关如何使用它的一些示例:
Startup.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 并且我们想要进行 class 分离而不是方法分离时:
Startup.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();
不确定如果绑定了多个地址会发生什么。
我正在尝试在应用程序启动时在我的 Startup.cs 文件中找到请求 URL(特别是域)..
public Startup(IHostingEnvironment env)
{
Configuration = new Configuration().AddEnvironmentVariables();
string url = "";
}
我在 Startup.cs 文件中需要它,因为它将确定稍后在启动 class 的 ConfigureServices 方法中添加哪些临时服务。
获取此信息的正确方法是什么?
很遗憾,您无法检索应用程序的托管 URL,因为该位由 IIS/WebListener 等控制,不会直接流向应用程序。
现在一个不错的选择是为每个服务器提供一个 ASPNET_ENV
环境变量,然后分离您的逻辑。以下是有关如何使用它的一些示例:
Startup.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 并且我们想要进行 class 分离而不是方法分离时:
Startup.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();
不确定如果绑定了多个地址会发生什么。