[英]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.