如何在C#(Xamarin.Forms)中用FirebaseDatabase.net连接Local Emulator Suite取数?
解决Local Emulator Suite的C#数据访问问题
1. 修正REST API访问格式
你之前的REST URL格式错误,模拟器不支持?ns=参数传递数据库名,正确的URL结构是:
http://127.0.0.1:9000/NAMESPACE_NAME.json
替换NAMESPACE_NAME为你的目标数据库名称,即可正常请求数据。
2. C#代码调整(分两种常用库)
情况一:使用第三方FirebaseDatabase.net库
初始化FirebaseClient时,需将数据库名作为URL路径的一部分,而非查询参数;同时模拟器不需要真实认证令牌,提供一个虚拟值即可:
var firebaseClient = new FirebaseClient( "http://127.0.0.1:9000/NAMESPACE_NAME", new FirebaseOptions { AuthTokenAsyncFactory = () => Task.FromResult("local-emulator-token") }); var data = await firebaseClient.Child("Theme_1/theme_name").OnceSingleAsync<string>();
情况二:使用官方Firebase Admin SDK
初始化Admin SDK时直接指定模拟器的数据库URL:
// 初始化Firebase App FirebaseApp.Create(new AppOptions() { Credential = GoogleCredential.GetApplicationDefault(), DatabaseUrl = "http://127.0.0.1:9000/NAMESPACE_NAME" }); // 读取数据 var db = FirebaseDatabase.DefaultInstance; var dataRef = db.GetReference("Theme_1/theme_name"); var snapshot = await dataRef.GetValueAsync(); var data = snapshot.Value?.ToString();
3. 额外检查项
- 确认数据库模拟器确实在9000端口运行(可在Local Emulator Suite控制台查看端口状态)
- 确保本地防火墙未拦截127.0.0.1:9000的HTTP请求
- 若代码默认使用HTTPS,需强制切换为HTTP(模拟器仅支持HTTP)
内容的提问来源于stack exchange,提问作者nifma
相关产品推荐
相关产品推荐

