.NET7 Maui iOS仅出现SocketException(65): No route to host问题排查
问题分析:MAUI iOS局域网通信抛出SocketException (65)
问题背景
基于.NET 7开发的MAUI应用,在Android设备上可通过以下代码正常与局域网服务器(IP:192.168.3.10)通信:
TcpClient client = new TcpClient(); await client.ConnectAsync(IPAddress.Parse("192.168.3.10"), 12345);
或
Ping ping = new Ping(); await ping.SendPingAsync(IPAddress.Parse("192.168.3.10"));
但在iOS 16.3.1的iPhone 13 mini上执行时,抛出SocketException (65): No route to host异常。设备与服务器处于同一局域网,且通过系统工具(Fing)可正常Ping通服务器,Info.plist已配置:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsLocalNetworking</key> <true/> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
部分iPhone设备无此问题,相关反馈显示可能与iOS 16相关。
可能的原因
- iOS 16本地网络权限触发异常:iOS 16对本地网络访问的权限校验更严格,MAUI的
TcpClient/Ping底层API可能未正确触发系统的本地网络权限请求弹窗,导致应用实际未获得局域网访问权限。即使Info.plist配置了NSAllowsLocalNetworking,若用户未明确授予权限,应用仍无法访问本地网络。 - .NET MAUI iOS网络API适配问题:iOS 16环境下,.NET跨平台网络类(如
TcpClient、Ping)的底层实现与iOS的CFNetwork框架存在兼容性问题,特定设备/版本下会出现路由解析失败,导致"No route to host"错误。 - iPhone Wi-Fi私有地址干扰:iPhone开启Wi-Fi“私有地址”功能后,会随机化局域网内的设备IP,可能导致路由表解析异常。关闭该功能后可验证是否解决问题。
- 应用网络权限未完全授予:检查iPhone设置中该MAUI应用的网络权限,确认“Wi-Fi”和“蜂窝网络”权限均已开启,避免系统拦截应用的网络请求。
内容的提问来源于stack exchange,提问作者Csaba
相关产品推荐
相关产品推荐

