当我在开放 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?
非常感谢任何帮助。
您正在使用 webhook,对吧? 。从 https 发出请求到 http 是不可能的,所以你必须伪造该请求。我更喜欢使用 Ngrok 来解决这个问题。