首页 > 解决方案 > 如何在启动时获取asp.net核心应用程序的本地url

问题描述

我有一个托管在 IIS 中的 ASP.NET Core 5 应用程序。

启动应用程序时,我想点击一些 Web API 来初始化一些服务。

是否可以在 Startup.cs 中访问 Port 和 PathBase?

然后我可以像这样构建请求网址https://localhost:{Port}/{PathBase}/api/startup/init

标签: asp.net-core.net-5

解决方案


如果它由 lauchSettings.json 提供,您“无法”检索的简短答案。解决此问题并始终可以在启动时访问 url 的最佳方法是更改Program.cs​​ . 创建一个静态类(或其他解决方案)来存储 url:

public static class Settings{ readonly string Url = "your_url"}

然后从Program.cs

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseUrls(Settings.Url);
                });

然后只需从您想要使用的任何地方检索Settings.Url

使用UseUrls配置从代码而不是从 lauchsettings.json 文件提供 url。

像这样部署时要格外小心

url 需要在您的应用程序中具有单一的事实来源,并且它不被认为是最佳实践,因为它取决于应用程序将侦听的服务器。我会接受@DavidG 的建议,用代码调用它,无论你想要什么服务。


推荐阅读