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

C# Nancy.Hosting.Self仅响应本地请求,网络请求无法接入求助

解决Nancy自托管跨机器访问的问题

嘿,我之前也踩过Nancy自托管的这个坑——本地能正常访问API,局域网其他机器却连不上,哪怕关了Windows防火墙也没用。核心问题其实是Nancy默认只监听本地回环地址(127.0.0.1),得调整配置让它监听所有网卡,下面给你一步步说怎么解决:

1. 用0.0.0.0监听所有网卡

最简单直接的办法就是把Nancy的启动地址改成http://0.0.0.0:1234,这样它就会监听你机器上所有可用的网络接口,而不是只盯着本地回环地址。代码示例如下:

using Nancy.Hosting.Self;

// 初始化主机时指定0.0.0.0地址
var nancyHost = new NancyHost(new Uri("http://0.0.0.0:1234"));
nancyHost.Start();

配置完之后,其他机器直接用你的局域网IP(比如http://10.10.10.149:1234)就能访问API了。

2. 搞定http://+:1234的报错问题

你说用http://+:1234时编译/运行报错?其实这个通配符地址是可行的,但Windows默认会限制非管理员账户绑定这类通配符地址,得先给程序授权。

按下面步骤操作:

  • 右键命令提示符,选择「以管理员身份运行」
  • 执行这条命令给所有用户添加URL预留权限:
    netsh http add urlacl url=http://+:1234/ user=Everyone
    

执行完之后,再回到代码里用http://+:1234启动Nancy,就不会报错了。这个地址和0.0.0.0效果类似,都是监听所有网卡。

3. 进阶配置:让Nancy自动处理权限

如果不想每次手动敲命令,可以通过HostConfiguration让Nancy自动创建URL预留(首次运行需要管理员权限,之后普通用户也能启动):

var hostConfig = new HostConfiguration
{
    UrlReservations = new UrlReservations { CreateAutomatically = true },
    // 可选:开启分块编码,优化大请求处理
    AllowChunkedEncoding = true
};

var nancyHost = new NancyHost(hostConfig, new Uri("http://0.0.0.0:1234"));
nancyHost.Start();

最后验证一下

启动你的WPF程序后,拿另一台同局域网的机器,浏览器输入http://你的局域网IP:1234试试。要是还不行,排查下是不是路由器层面有防火墙限制,或者两台机器不在同一个网段里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:21:36