gpt4 book ai didi

c# - 如何从 Asp.NET Core 3.1 Startup 类访问 launchSettings.json 中找到的 `applicationUrl` 属性?

转载 作者:行者123 更新时间:2023-12-01 19:17:43 26 4
gpt4 key购买 nike

我目前正在创建一个 Asp.NET Core 3.1 API 应用程序。其中,我有一个如下所示的 launchSettings.json:

{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:61392",
"sslPort": 44308
}
},
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "weatherforecast",
"environmentVariables": {
"Key": "Value",
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Application.API": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "weatherforecast",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
}
}
}

特别是,我有兴趣获取此文件中定义的 applicationUrl 值。不幸的是,除了直接通过 JSON 序列化加载文件并探测其中的值之外,我没有看到任何明显的方法来访问它们。

因此,我正在寻找更优雅的解决方案。有没有办法从 Startup.Configure 和/或 Startup.ConfigureServices 方法中访问这些值?

我正在考虑这样的事情:

public void Configure(IApplicationBuilder builder)
{
var url = builder.ApplicationServices.GetRequiredService<IServerHostingEnvironment>().ApplicationUrl
}

作为引用,我确实看到了 this question ,但这似乎需要 HTTP 请求。就我而言,在发出请求之前我仍在配置服务器。

为了进一步引用和上下文:我正在构建一个 .NET GitHub App 应用程序,并正在制作 Smee.io 客户端的相应等效项,其 Javascript 代码 can be found here .

客户端获取(通过服务器发送的事件)并将其发送到目标。我弄清楚并配置了source,但具有讽刺意味的是,我在访问和建立target URL(上面看到的applicationUrl)时遇到了麻烦并配置时尚。

最后,我意识到我可以对 appSettings.json 中的值进行硬编码,但这意味着我将在两个位置维护相同的值 - 一个在 appSettings.json 和已存在的 launchSettings.json 中的一个。如果可能的话,我宁愿将其保留在一个地方以减少维护负担。

最佳答案

我最近实际上也在寻找类似的东西。

事实证明,您可以通过查看环境变量来确定 Visual Studio 在调试 session 期间(从 launchSettings.json 中的 applicationUrl)传递给应用程序的 URL。

尽管请记住,这可能仅适用于在使用 launchSettings.json 文件的 VStudio IDE 中进行调试

var urls = Environment.GetEnvironmentVariable("ASPNETCORE_URLS").Split(";");

关于c# - 如何从 Asp.NET Core 3.1 Startup 类访问 launchSettings.json 中找到的 `applicationUrl` 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59398439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com