[英]Running .NET 5 Api under Kestrel from Visual Studio 2019 ignores launchSettings.json applicationUrl setting
我们有一个“只在我的机器上”的问题,没人能弄清楚。
我们有一个 .NET 5 Api,我们在 Kestrel 下运行用于开发目的。 在 Visual Studio 中运行 API 的所有其他开发虚拟机上,都会获取launchSettings.json
中的值并在正确的端口上启动。 但是,在有问题的 VM 上,它仅在默认的 5000/5001 端口上启动。
这是launchSettings.json
文件的条目。
"profiles": {
"My.Api": {
"commandName": "Project",
"environmentVariables": {
"LogStorageAccountConnectionString": "UseDevelopmentStorage=true",
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:7001;http://localhost:7000"
}
}
我知道有一种方法可以告诉do.net run
显式忽略launchSettings.json
但无法在 Visual Studio 中找到会触发该行为的设置。
我们还认为这可能是该文件夹的权限问题,因为它们有点奇怪,所以我们将我们的 repo 克隆到一个新文件夹中并再次设置 Api 以在本地运行。 它仍然在 5000/5001 上运行。
我们很多人都被难住了。 有任何想法吗?
在使用 Visual Studio 在 Kestrel 下运行.NET 5
API (以及Blazor
项目)时,我也遇到了完全相同的问题。 然而对我来说,它突然来了——我成功地运行了这个项目几个星期,然后有一天它开始拒绝遵守launchSettings.json
并继续在默认值5000/5001
上运行。
我通过将 Visual Studio 从 16.8.3 升级到 16.8.4 解决了这个问题。 但是,由于我最初对 16.8.3 没有问题,我怀疑问题与 Visual Studio 版本无关。 我认为我的原始安装以某种方式损坏,升级只是修复了损坏。
顺便说一句,当我使用 dotnet run 从命令行运行项目时,我的launchSetting.json
很荣幸。 我还可以通过在Program.cs
中设置端口来使用解决方法
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseUrls("https://localhost:6000");
});
我们在 Visual Studio 2022 中也遇到了 .NET 5 和 .NET 6 的问题,唯一有效的方法是在launchSettings.json
的environmentVariables
变量部分设置(显然未记录的)变量Urls
。 换句话说:
"profiles": {
"My.Api": {
"commandName": "Project",
"environmentVariables": {
"LogStorageAccountConnectionString": "UseDevelopmentStorage=true",
"ASPNETCORE_ENVIRONMENT": "Development",
"Urls": "https://localhost:7001;http://localhost:7000"
}
}
}
遗憾的是,VS 的“启动配置文件”对话框不会选取此值,也不允许您设置它,但手动编辑launchSettings.json
并不会太麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.