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

Xamarin.iOS模拟器无法连接本地Restful API求助

解决Xamarin iOS模拟器连接本地IIS Express API的ConnectFailure问题

我之前开发Xamarin跨平台应用时,也踩过iOS模拟器连不上本地API的坑,结合你的情况,给你几个实用的排查和解决思路:

1. 修正IIS Express的绑定配置

IIS Express默认只绑定localhost或127.0.0.1,而iOS模拟器是独立的虚拟机,它的localhost指向自己,不是你的开发主机。你需要让IIS Express监听主机的局域网IP:

  • 找到WebAPI项目下的隐藏.vs文件夹,进入config目录打开applicationhost.config文件
  • 找到对应网站的<bindings>节点,添加一条绑定规则,替换成你的主机局域网IP(比如192.168.3.10):
    <bindings>
      <binding protocol="http" bindingInformation="*:5001:127.0.0.1" />
      <binding protocol="http" bindingInformation="*:5001:localhost" />
      <!-- 添加这条自定义绑定 -->
      <binding protocol="http" bindingInformation="*:5001:192.168.3.10" />
    </bindings>
    
  • 重启IIS Express,确保它开始监听这个新的IP

2. 更新iOS模拟器的API地址

把iOS对应的BaseAddress从http://localhost:5001改成主机的局域网IP,比如:

public static string BaseAddress = Device.RuntimePlatform switch
{
    Device.Android => "http://10.0.2.2:5001",
    Device.iOS => "http://192.168.3.10:5001", // 替换成你的主机实际局域网IP
    _ => "http://127.0.0.1:5001"
};
public static string TodoItemsUrl = BaseAddress + "/api/Appointment/GetAppointments";

3. 检查Windows防火墙设置

Windows防火墙大概率会阻止外部设备(包括iOS模拟器)访问本地IIS Express端口:

  • 打开「Windows Defender防火墙」→「高级设置」→「入站规则」
  • 新建规则,选择「端口」,输入5001,允许连接,完成配置
  • 可以先临时关闭防火墙测试,若能连接则确认是防火墙问题,再保留规则即可

4. 验证API的可达性

在iOS模拟器里打开Safari,直接访问http://你的主机IP:5001/api/Appointment/GetAppointments:

  • 如果Safari能正常返回数据,说明网络和API配置没问题,再排查Xamarin代码里的请求逻辑(比如超时设置、HTTP方法是否匹配)
  • 如果Safari也打不开,回到前面的步骤检查IIS绑定和防火墙

额外小提示

如果你经常切换网络环境,不想每次改IP,可以在开发电脑上设置一个固定的局域网IP,这样BaseAddress不用频繁调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:36:10