问题描述
使用“dotnet new webapi”命令创建示例项目,然后删除 Properties/launchSettings.json(以了解如果此文件不存在会发生什么)。在使用“dotnet run”命令运行项目时,项目会运行,但在访问 url - https://localhost:5001/swagger/index.html 时,我收到 HTTP 错误 404。但是如果我在调试中运行相同的项目模式(按 f5),我得到了 swagger 页面。在通过“dotnet run”或 f5 运行时未更改代码或设置,在“dotnet run”时未收到错误。无法理解以下内容:
提前致谢
解决方法
我没有理解你所观察到的行为。即使没有 launchSettings.json
,从头开始创建的 ASP.NET Core 项目也会默认侦听 5000
and 5001
ports。
也就是说,您有几个选项可以设置 ASP.NET Core 应用程序将侦听的地址:
来自 Andrew Lock 的 article。同样来自docs
-
UseUrls()
设置要在Program.cs
中静态使用的网址 - 环境变量 - 使用
DOTNET_URLS
或ASPNETCORE_URLS
设置 URL。 - 命令行参数 - 从命令行运行时使用
--urls
参数设置 URL。 - 使用
launchSettings.json
- 使用applicationUrl
属性设置网址。 -
KestrelServerOptions.Listen()
- 使用Listen()
手动配置 Kestrel 服务器的地址。
dotnet run
command checks launchSettings.json
for configuration,如果它没有找到任何东西,它会在让 Kestrel 将其 default ports :5000
and :5001
分别用于 http 和 https 之前尝试更多的东西。