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

C#创建Firestore数据库无报错却执行终止问题求助

Firestore客户端初始化后程序无提示终止的解决思路

针对你遇到的问题——存储桶访问正常但Firestore客户端操作导致程序无提示终止、异常未被捕获,可按以下方向排查:

  • 确认Firestore数据库已创建并生效
    确保Firebase控制台中已完成Firestore数据库的创建(需选择数据库位置,如us-central1),新创建的数据库可能需要数分钟才能完全生效。服务账号属于项目即自动关联Firestore,无需额外关联操作。

  • 显式传入凭据初始化Firestore客户端
    避免依赖隐式凭据加载,直接传入已验证有效的服务账号密钥:

    var credential = GoogleCredential.FromFile("/Users/juliustolksdorf/Projects/Interior Circle/keys/interiorcircle-4f70f209e160.json");
    var db = new FirestoreDbBuilder
    {
        ProjectId = "interiorcircle",
        Credential = credential
    }.Build();
    
  • 修复异步代码未等待的问题
    这是最可能的原因:如果包含await docRef.SetAsync(user)的方法是async void,或者调用方未等待异步任务,抛出的异常无法被外层catch捕获,会直接终止进程。

    • 将方法签名改为async Task而非void
    • 控制台程序入口需改为async Task Main():
      static async Task Main(string[] args)
      {
          try
          {
              var credential = GoogleCredential.FromFile("密钥路径");
              var storage = StorageClient.Create(credential);
              var buckets = storage.ListBuckets("interiorcircle");
              foreach (var bucket in buckets)
              {
                  Console.WriteLine(bucket.Name);
              }
      
              var db = new FirestoreDbBuilder
              {
                  ProjectId = "interiorcircle",
                  Credential = credential
              }.Build();
              DocumentReference docRef = db.Collection("users").Document("alovelace");
              Dictionary<string, object> user = new Dictionary<string, object>
              {
                  { "First", "Ada" },
                  { "Last", "Lovelace" },
                  { "Born", 1815 }
              };
              await docRef.SetAsync(user);
          }
          catch(Exception e)
          {
              Console.WriteLine(e.ToString());
          }
      }
      
  • 启用客户端日志排查底层错误
    开启Debug级日志,查看Firestore客户端的详细操作日志,定位隐藏问题:

    using Microsoft.Extensions.Logging;
    
    var loggerFactory = LoggerFactory.Create(builder =>
    {
        builder.AddConsole();
        builder.SetMinimumLevel(LogLevel.Debug);
    });
    var db = new FirestoreDbBuilder
    {
        ProjectId = "interiorcircle",
        Credential = credential,
        LoggerFactory = loggerFactory
    }.Build();
    
  • 验证服务账号Firestore权限
    虽然你是项目所有者,仍需确认服务账号拥有Cloud Datastore User或Firestore Admin权限(项目所有者默认包含),可前往IAM控制台检查权限配置,必要时重新保存权限以触发同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:54:22