You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署的.NET Core 7 Http Listener无法从本地主机访问

C# HttpListener Docker部署后本地无法访问的解决方案

问题背景

用C#编写的硬编码HttpListener程序,本地VS2022调试正常,Docker部署后容器内执行curl localhost:8001可正常响应,但Windows主机浏览器访问http://localhost:8001失败,疑似WSL网络相关问题。

核心问题分析

  1. 监听地址限制:程序硬编码监听localhost:8001,仅接受来自容器内部localhost的请求,外部请求无法接入。
  2. WSL2网络模式限制:使用network_mode: host时,容器实际使用WSL2虚拟机的网络栈,Windows主机的localhost无法直接映射到容器服务。

解决步骤

1. 修改程序监听范围

将HttpListener的监听前缀改为监听所有网卡的8001端口:

public class Program
{
    public static HttpListener listener;
    // 改为监听所有网卡
    public static string url = "http://*:8001/";

    public static void Main(string[] args)
    {
        listener = new HttpListener();
        listener.Prefixes.Add(url);
        listener.Start();
        Console.WriteLine("Listening for connections on {0}", url);
        // 后续请求处理逻辑...
    }
}

2. 调整Docker Compose网络配置

移除network_mode: "host",使用默认桥接模式即可实现端口映射:

version: '3'
services:
  xevenlistens:
    image: danregalia/xevenlistens:latest
    container_name: x7Listens
    ports:
      - "8001:8001"

3. 重建并启动容器

执行命令更新容器:

docker-compose down
docker-compose build --no-cache
docker-compose up -d

验证

完成后,在Windows主机浏览器访问http://localhost:8001,即可正常获取"System okay"响应。

内容的提问来源于stack exchange,提问作者Dregalia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 16:27:02