Xamarin Forms无法连接本地ASP.NET Core Web API,报Network subsystem is down错误
解决Xamarin Forms连接本地ASP.NET Core API的问题
针对你遇到的System.Net.Http.HttpRequestException: 'Network subsystem is down'错误,结合之前的SSL握手问题,按以下步骤排查:
1. 替换localhost为开发机的局域网IP
模拟器或真机的localhost指向设备自身,而非你的开发电脑。你需要:
- 找到开发机的局域网IP:Windows执行
ipconfig,Mac/Linux执行ifconfig或ip addr,取以太网/Wi-Fi的IPv4地址(比如192.168.1.100)。 - 将API地址改为
https://你的局域网IP:57347/,确保代码中的ApiUrl变量使用这个地址。
2. 确保ASP.NET Core API允许局域网访问
默认情况下,本地运行的API可能只绑定到localhost,导致设备无法访问。修改API的启动配置:
- 在Program.cs中添加绑定地址配置:
builder.WebHost.UseUrls("https://0.0.0.0:57347", "http://0.0.0.0:57347");
0.0.0.0表示监听所有可用网络接口,这样局域网内的设备就能访问API了。
3. 配置设备的网络权限
Android端
- 在
AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
- 若使用HTTP测试(暂时跳过SSL问题),Android 9及以上需要允许明文流量,在
application标签中添加:
android:usesCleartextTraffic="true"
iOS端
- 在
Info.plist中添加App Transport Security例外(仅测试用,上线需调整):
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
4. 完善SSL证书处理(可选,若坚持用HTTPS)
虽然你已经添加了证书验证回调,但仍可能存在设备不信任开发证书的问题:
- 导出开发机的ASP.NET Core SSL证书:证书通常位于
C:\Users\你的用户名\AppData\Roaming\ASP.NET\Https目录,找到对应API的.pfx文件,导出为可安装的证书格式。 - 将证书安装到模拟器或真机:Android可通过设置-安全-安装证书;iOS可通过Safari打开证书文件进行安装,并在设置中信任该证书。
临时排查建议
先改用HTTP协议测试API连接,排除SSL问题后再切换回HTTPS,这样能快速定位是网络连通性问题还是SSL证书问题。
内容的提问来源于stack exchange,提问作者percy
相关产品推荐
相关产品推荐

