【问题标题】:Microservice not Launching on Port Set by LaunchSettings.JSON微服务未在 LaunchSettings.JSON 设置的端口上启动
【发布时间】:2021-01-13 15:54:54
【问题描述】:

我正在尝试调试一个微服务。当从 VS 运行时,它在 LaunchSettings.json 设置的端口中启动,但是当使用 exe 运行时,所有微服务都从端口 5001 启动。

  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:5004",
      "sslPort": 44345
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "myapp": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "applicationUrl": "http://localhost:5004",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

【问题讨论】:

  • 据我了解,我相信,这些端口仅在调试或运行 Visual Studio 时才有意义。它们不会转移到部署 (exe) 文件中。
  • @Jay 如何让exe文件使用特定端口?
  • 再说一次,我不是专家,所以,这是一个猜测。但是微服务,就像在互联网上工作的其他服务一样,在部署时具有默认端口,您无法更改它们,因为它们会与其他默认端口冲突。在本地主机上,您可以控制端口,因为它是您的计算机。但在互联网上,它不是那样工作的。此外,您为什么要在非默认端口上提供服务?除了因为您决定更改端口而使想要使用您的服务的应用程序感到困惑之外,您计划从中获得什么可能的收益。我不明白。
  • @Jay 有几个项目,我需要打开 VS 并启动它们来调试应用程序。这使我的机器变慢,所以我只想运行 exe 进程来调试网关(其中我将在VS中打开)。
  • 那么,你的问题应该更新了。您希望通过在 Visual Studio 外部运行来调试您的微服务。然后,也许您可​​以将您的应用程序放在 Docker 容器中,并使用您想要的端口从 Docker 运行应用程序。这就是我会做的。

标签: c# .net asp.net-core microservices


【解决方案1】:

Kestrel 服务器配置为在 5000 和 5001 上运行 dotnet core 应用程序。但是您可以通过在执行 exe 时提供命令行参数 --urls 来覆盖它。你可以在Setting Up Kestrel阅读更多内容

覆盖默认端口的另一种方法是从 cmd 运行它。 假设您的 exe 名称是 webapi,然后覆盖默认端口 open cmd 并转到 exe 所在的文件夹并运行
webapi.exe --urls http://localhost:port。端口是 kestrel 将开始侦听的整数值。

【讨论】:

    猜你喜欢
    • 2019-10-28
    • 2021-09-08
    • 2015-04-26
    • 2019-11-15
    • 1970-01-01
    • 2017-03-25
    • 2014-03-23
    • 2019-12-25
    • 2018-07-16
    相关资源
    最近更新 更多