ASP.NET 核心禁用 HTTPS

ASP.NET Core disable HTTPS

我有一个 dockerized ASP.NET 核心应用程序,我正在尝试 运行 在本地 Linux (Fedora 33)。我想禁用 HTTPS,这样我就不必处理不断出现的证书错误。

为此,我只是禁用了默认包含的 HTTPS 重定向功能,但是该应用程序根本没有响应任何 HTTP 请求。

我通过在 Startup.cs 中显式配置 Kestrel,设法在 HTTP 上将应用程序的开发版本设为 运行:

webBuilder.UseKestrel(options => {
    options.ListenAnyIP(5000);
});

但是,它不适用于应用程序的生产版本。每当我向 http://0.0.0.0:5000 发送请求时,我都会收到 curl: (56) Recv failure: Connection reset by peer 错误。

容器中的

运行 netstat -ap 未将应用程序显示为绑定到端口:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 localhost:46825         0.0.0.0:*               LISTEN      -                   
udp        0      0 localhost:36022         0.0.0.0:*                           -                   
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     27739639 1/dotnet             /tmp/dotnet-diagnostic-1-3889474-socket

在启动过程中,该应用程序也不会显示我通常期望的相同信息,例如以下来自我的另一个 dockerized ASP.NET 使用 HTTPS 的核心应用程序:

web-prod_1  | Hosting environment: Production
web-prod_1  | Content root path: /app
web-prod_1  | Now listening on: https://[::]:443
web-prod_1  | Now listening on: http://[::]:80
web-prod_1  | Application started. Press Ctrl+C to shut down.

该应用程序在启动时不打印任何内容,这有点令人担忧。

如果能提供任何帮助,我将不胜感激,我已经尝试了几乎所有我能想到的方法,并且正在全力以赴。

编辑 其原因与 HTTPS 无关 - 在 Startup.cs 中添加了具有未终止的 StartAsync 的 HostedService。这以某种方式阻止了应用程序的其余部分启动,但仅限于生产构建。将 AddHostedService 调用移动到 Program.cs 解决了问题。

其他浏览器的第一个厚脸皮 要么 脸颊阻止杀毒软件或您 PC 的防火墙可能会中断它。 然后 通过 ip 扫描器检查 ip 和端口号之前更改端口号。

因为你现在需要将 http 更改为 https 时需要 SSL 证书,所以设置禁用选项 Tools->option->environment->webbrowsers

但是容器引擎实际上是从绑定容器和主机端口的标志开始的吗? Conection reset表示端口关闭主动拒绝连接

你提到你从容器内部做了一个 netstat,你能在容器 运行ning 时从主机 运行 另一个吗?我喜欢用 netstat -plnt

如果您的容器向 OS 公开了正确的端口,您应该可以看到它并能够在 localhost:port 访问它,这里我有一个 mysql 代理公开 3306

❯ sudo netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

     1/init
tcp6       0      0 :::3306                 :::*                    LISTEN      300988/containers-r

我在启动它时必须指定端口绑定(这取决于您的容器引擎,这是在不同的 flags/options 中完成的)

docker run -ti -p 3306:3306 eu.gcr.io/xxx-xx/svc-xx-xx-tests