asp.net-core - 如何在启动时获取asp.net核心应用程序的本地url
问题描述
我有一个托管在 IIS 中的 ASP.NET Core 5 应用程序。
启动应用程序时,我想点击一些 Web API 来初始化一些服务。
是否可以在 Startup.cs 中访问 Port 和 PathBase?
然后我可以像这样构建请求网址https://localhost:{Port}/{PathBase}/api/startup/init
解决方案
如果它由 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 的建议,用代码调用它,无论你想要什么服务。
推荐阅读
- java - 当两个文件都在同一个文件夹中时,为什么 relativize 会产生“../file_name”?
- apache - .htaccess 内部路径重写的最佳实践?
- css - 伪元素在 chrome 手机上消失,在桌面上运行良好
- c - 如何将文本文件与单词列表进行比较,无论哪个单词不在列表中,我都必须在第三个文件中写下(在 C 中)
- flutter - 针对 Google Ads 的严格安全 Cookie 政策
- java - 如何从控制器中的 Principal 获取数据?
- android - android:如果存在则跳过 ACTION_CREATE_DOCUMENT
- qml - 将 GridLayout 与 QAbstractModelList 和中继器一起使用
- pandas - 根据条件从熊猫数据框中仅选择多行
- php - 从 PHP 中的 PostgreSQ 游标获取数据