我们有一个“只在我的机器上”的问题,没有人能弄清楚。
我们有一个.NET 5 API,我们在Kestrel下运行,用于开发目的。在运行Visual Studio中的API的每个其他开发虚拟机上,将获取launchSettings.json
中的值并在正确的端口上启动。但是,在有问题的虚拟机上,它仅在默认的5000/5001端口上启动。
这是launchSettings.json
文件的条目。
"profiles": {
"My.Api": {
"commandName": "Project",
"environmentVariables": {
"LogStorageAccountConnectionString": "UseDevelopmentStorage=true",
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:7001;http://localhost:7000"
}
}
我知道有一种方法可以告诉dotnet run
显式忽略launchSettings.json
,但在Visual Studio中找不到触发该行为的设置。
我们还认为这可能是文件夹上的权限问题,因为它们有点奇怪,所以我们将我们的repo克隆到一个新文件夹中,并再次设置API以在本地运行。它仍然运行在5000/5001上。
我们都被难倒了。有什么想法吗
2条答案
按热度按时间kqlmhetl1#
我在Kestrel下用Visual Studio运行
.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
中设置端口vfwfrxfs2#
我们在Visual Studio 2022中的.NET 5和.NET 6也遇到了这个问题,唯一有效的方法是在
launchSettings.json
的environmentVariables
部分设置(显然没有文档)变量Urls
。换句话说:遗憾的是VS的“LaunchProfiles”对话框并没有选择这个值,也不允许你设置它,但是手动编辑
launchSettings.json
并不是一件很痛苦的事情。更新
我们发现这个问题是由于我们在Startup.cs的
ConfigureContainer
方法中使用了Autofac和以下内容:其中,
configuration
是我们的自定义配置提供程序,ConfigurationRoot
的类型是IConfigurationRoot
。我们不太确定为什么要添加这一行,所以我们删除了它,一切似乎都正常工作,包括传递
--urls
参数。