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
我有一个 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