首页 > 解决方案 > 在 Windows Docker 容器中启动 HttpListener 时访问被拒绝

问题描述

当我在 Windows Docker 容器中运行的 .NET Core 2.1 控制台应用程序中启动 HttpListener 时,出现以下异常:

System.Net.HttpListenerException:访问被拒绝

这是我的代码:

HttpListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://*:8080/test/");
httpListener.Start();

我的 Docker 映像基于此 Microsoft 映像:

FROM microsoft/dotnet:2.1-runtime

当我在 Docker 容器外运行控制台应用程序时,如果我从具有管理员权限的命令提示符启动应用程序,它就可以工作。如果我在容器外以普通用户身份运行它,则会失败并出现相同的访问被拒绝异常。

在 Docker 容器中运行时如何避免此异常?我认为您不能以管理员身份运行容器。我已经看到了调用此命令的建议

netsh http add urlacl url=http://*:8080/ user=Everyone listen=yes

但是容器中的 netsh 命令没有 http 选项。

注意:如果我在容器中运行基于 .NET Framework 4.7.2 的相同程序,它可以工作。

寻求这方面的建议。

标签: docker.net-core

解决方案


推荐阅读