我正在尝试在我的Startup.cs文件中找到应用程序启动时的请求URL(特定于域)..
public Startup(IHostingEnvironment env)
{
Configuration = new Configuration().AddEnvironmentVariables();
string url = "";
}
我需要在Startup.cs文件中使用它,因为它将确定稍后在启动类中,在ConfigureServices方法中添加的瞬态服务。
获取此信息的正确方法是什么?
答案 0 :(得分:4)
遗憾的是,您无法检索应用程序的托管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的另一个例子,我们想要进行类分离而不是方法分离:
<强> 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.
}
}
希望这有帮助。
答案 1 :(得分:2)
这不会为您提供域名,但如果您只是在端口上运行并且需要访问该域名,则可能会有所帮助:
var url = app.ServerFeatures.Get<Microsoft.AspNetCore.Hosting.Server.Features.IServerAddressesFeature>().Addresses.Single();
如果你绑定了多个地址,不确定会发生什么。