运行 dotnet core webapi 项目的问题

问题描述

使用“dotnet new webapi”命令创建示例项目,然后删除 Properties/launchSettings.json(以了解如果此文件不存在会发生什么)。在使用“dotnet run”命令运行项目时,项目会运行,但在访问 url - https://localhost:5001/swagger/index.html 时,我收到 HTTP 错误 404。但是如果我在调试中运行相同的项目模式(按 f5),我得到了 swagger 页面。在通过“dotnet run”或 f5 运行时未更改代码或设置,在“dotnet run”时未收到错误。无法理解以下内容

  • 为什么使用上述步骤运行代码时会出现 2 种不同的行为
  • 删除 launchsettings.json 的原因是为了确定哪些其他设置强制使用端口 5000/5001 和协议 http/https。

提前致谢

解决方法

我没有理解你所观察到的行为。即使没有 launchSettings.json,从头开始创建的 ASP.NET Core 项目也会默认侦听 5000 and 5001 ports

也就是说,您有几个选项可以设置 ASP.NET Core 应用程序将侦听的地址:

来自 Andrew Lock 的 article。同样来自docs

  • UseUrls() 设置要在 Program.cs 中静态使用的网址
  • 环境变量 - 使用 DOTNET_URLSASPNETCORE_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 之前尝试更多的东西。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...