如何在 VS 2022 中为 Open API 服务启用 http(而不是 https)?

问题描述 投票:0回答:1

当我在开放 API 服务的项目上运行 debug 时,它可以使用 launchSettings.json 中指定的端口启动浏览器。

{
  "profiles": {
    "Service": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
      "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:61050;http://localhost:61051"
    }
  }
}

我可以在日志中看到应用程序应该同时监听 https 和 http 端口

Now listening on: https://localhost:61050
Now listening on: http://localhost:61051

然后,我可以调用我的 GET 服务端点 https://localhost:61050/get-something,这很好。

但是当我尝试调用 http(不是 https)时,它不起作用并出现以下错误

This page isn’t working
localhost sent an invalid response.
ERR_INVALID_HTTP_RESPONSE

http 好像被禁用了。我怎样才能启用它?

我还尝试在配置服务时在

Program.cs
处添加以下代码。

builder.WebHost.ConfigureKestrel(options =>
{
    options.Listen(IPAddress.Any, 0);
});

在日志中,我可以看到它现在仅使用http侦听随机端口(虽然有点奇怪,启动调试时浏览器不会自动弹出)

Now listening on: http://0.0.0.0:63364

当我尝试调用 http://localhost:63364/get-something 时,它失败并出现相同的错误。

总结一下,

我的主要问题是

How can I enable http for my Open API service with a random port?

一个小问题(我不确定是否相关)是

Why builder.WebHost.ConfigureKestrel affects the behavior of browser pop-up?

非常感谢任何帮助。

c# .net-6.0 openapi visual-studio-2022
1个回答
0
投票

您正在使用 webhook,对吧? 。从 https 发出请求到 http 是不可能的,所以你必须伪造该请求。我更喜欢使用 Ngrok 来解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.