Xamarin Forms连接Firestore失败:Bad gRPC response问题解决
问题描述
我尝试使用Firebase官方文档中的代码在后端创建数据,代码如下:
var db = FirestoreDb.Create("interiorcircle"); 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);
已配置环境变量且可建立连接,但调用SetAsync方法时出现错误:
Bad gRPC response. Response protocol downgraded to HTTP/1.1.
解决方法
- 强制使用REST API替代gRPC:初始化
FirestoreDb时配置使用REST传输,绕开gRPC的协议兼容性问题。修改后的初始化代码如下:
var settings = new FirestoreSettings { UseRestApi = true }; var db = FirestoreDb.Create("interiorcircle", settings);
- 排查网络环境限制:部分服务器、防火墙或代理会拦截HTTP/2协议的gRPC请求,确认所在环境是否允许HTTP/2流量。若为代理问题,需调整代理规则放行gRPC相关请求。
- 更新Firestore SDK包:旧版本的
Google.Cloud.FirestoreNuGet包可能存在协议降级的已知bug,将包更新至最新稳定版本即可修复。 - 手动指定API端点:强制指定Firestore的REST端点,避免自动协议切换失败:
var settings = new FirestoreSettings { Endpoint = "https://firestore.googleapis.com" }; var db = FirestoreDb.Create("interiorcircle", settings);
内容的提问来源于stack exchange,提问作者innom
相关产品推荐
相关产品推荐

