如何在应用程序启动时获取请求URL

9 asp.net-core-mvc asp.net-core

我正在尝试在我的Startup.cs文件中找到应用程序启动时的请求URL(特定于域).

public Startup(IHostingEnvironment env)
{
   Configuration = new Configuration().AddEnvironmentVariables();
   string url = "";
}
Run Code Online (Sandbox Code Playgroud)

我在Startup.cs文件中需要它,因为它将确定在后面的ConfigureServices方法中启动类中添加的瞬态服务.

获取此信息的正确方法是什么?

N. *_*len 4

遗憾的是,您无法检索应用程序的托管 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
    }
}
Run Code Online (Sandbox Code Playgroud)

这是当 ASPNET_ENV=Dev 时的另一个示例,我们想要进行类分离而不是方法分离:

启动.cs:

public class Startup
{
    public void Configure(IApplicationBuilder app)
    {
        // Wont get called.
    }

    public void ConfigureDev(IApplicationBuilder app)
    {
        // Wont get called
    }
}
Run Code Online (Sandbox Code Playgroud)

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.
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。