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

Xamarin调用ASP.NET Core API触发空引用异常崩溃排查

问题根因与修复方案

你遇到的API交互触发崩溃问题由多个明确问题导致,按影响优先级排序:

1. 核心空引用崩溃原因:MonkeyCache未初始化

你在InternetCoffeeService中直接调用Barrel.Current做本地缓存,但MonkeyCache.FileStore要求必须在应用启动阶段完成初始化,未初始化时Barrel.Current为null,只要访问其成员就会抛出NullReferenceException,这是下拉刷新触发GET请求时直接崩溃的根因,和你看到的JNI层未处理空引用报错完全匹配。

修复方法

在Xamarin.Forms共享项目的App.xaml.cs构造函数中,InitializeComponent();调用后添加初始化代码:

using MonkeyCache.FileStore;

Barrel.Current.ApplicationId = "MyCoffeeAppCache";

2. ViewModel删除命令的调用错误

你在InternetCoffeeViewModel的Remove方法中,错误给静态非泛型类InternetCoffeeService添加了泛型参数,触发删除操作时会直接抛出运行时错误:

// 错误写法
await InternetCoffeeService<Coffee>.RemoveCoffee(coffee.Id);

修复方法

替换为正确的静态类调用方式:

await InternetCoffeeService.RemoveCoffee(coffee.Id);

3. WebAPI项目配置错误

你贴出的Program.cs内容完全复制了Startup.cs的代码,不是ASP.NET Core WebAPI的正确实现,会导致Web服务无法正常启动,模拟器访问接口时会抛出连接失败异常。

修复方法

替换Program.cs为正确的主机构建代码(以.NET 5为例):

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace MyCoffeeApp.WebAPI
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    // 监听所有网卡IP,确保安卓模拟器可通过10.0.2.2转发访问
                    webBuilder.UseUrls("http://0.0.0.0:5000");
                    webBuilder.UseStartup<Startup>();
                });
    }
}

本地调试阶段可以暂时注释掉Startup.cs里生产环境的app.UseHttpsRedirection();配置,避免HTTP请求被强制跳转拦截。

4. 其他潜在崩溃点修复

  • 安卓项目添加网络权限:在AndroidManifest.xml的<manifest>节点下添加<uses-permission android:name="android.permission.INTERNET" />
  • 给Refresh方法的接口返回值加空判断,避免请求异常时AddRange传入null触发二次崩溃:
    var coffees = await InternetCoffeeService.GetCoffee();
    if(coffees != null)
        Coffee.AddRange(coffees);
    
  • Add方法中对弹窗返回值做非空判断,用户点击取消弹窗时直接返回,不要提交空参数请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:21:48