我正在使用C#探索Firebase实时数据库(RTDB),并正在.NET控制台应用程序上试用Firesharp框架。我已经按照大多数在线教程进行了入门,但是无法将任何数据发布到我的RTDB中。我在AddData().Wait()
处抛出了此错误:
System.AggregateException已引发
“发生一个或多个错误。(执行请求时发生错误。路径:0 /,方法:PUT)”
我的实现是这样的:
class Program
{
static IFirebaseConfig config = new FirebaseConfig
{
AuthSecret="MY_AUTH_SECRET",
BasePath="https://MY_APP.firebaseio.com/"
};
static IFirebaseClient client;
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
client = new FireSharp.FirebaseClient(config);
if (client != null)
{
Console.WriteLine("Connection established!");
AddData().Wait(); //Crashed here with above error
}
}
public static async Task AddData()
{
var data = new Data
{
id = "Hello",
text = "World"
};
SetResponse response = await client.SetAsync("0/", data);
Data result = response.ResultAs<Data>();
}
}
我对C#还是很陌生,所以请提出建议我哪里出错了。
PS:我在Mac上使用VS,因此没有编写用于测试的表单应用程序。
编辑:完整的错误日志:
System.AggregateException:“发生了一个或多个错误。(错误 执行请求时发生。路径:0,方法:PUT)“ ---> System.Exception {FireSharp.Exceptions.FirebaseException}:“错误 执行请求时发生。路径:0,方法:PUT” ---> System.Exception {System.IO.FileNotFoundException}:“无法加载 文件或程序集'System.Security.Permissions,Version = 0.0.0.0, 文化=中性,PublicKeyToken = cc7b13ffcd2ddd51'。系统无法 找到指定的文件。\ n“
在 Newtonsoft.Json.Serialization.JsonTypeReflector.get_DynamicCodeGeneration()\ n 在 Newtonsoft.Json.Serialization.JsonTypeReflector.get_ReflectionDelegateFactory()\ n 在 Newtonsoft.Json.Serialization.DefaultContractResolver.GetDefaultCreator(Type createdType)\ n位于 Newtonsoft.Json.Serialization.DefaultContractResolver.InitializeContract(JsonContract 合同)\ n Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract(Type objectType)\ n在 Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(Type objectType)\ n在 Newtonsoft.Json.Serialization.DefaultContractResolver.ResolveContract(Type 类型)\ n Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter,对象值,类型objectType)\ n在 Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter,对象值,类型objectType)\ n在 Newtonsoft.Json.JsonConvert.SerializeObjectInternal(对象值,类型 类型,JsonSerializer jsonSerializer)\ n在 FireSharp.RequestManager.PrepareRequest(HttpMethod方法,Uri uri, 对象有效负载)\ n FireSharp.RequestManager.RequestAsync(HttpMethod方法,字符串路径, QueryBuilder queryBuilder,对象有效负载)
---内部异常堆栈跟踪的结尾--- FireSharp.RequestManager.RequestAsync(HttpMethod方法,字符串路径, QueryBuilder queryBuilder,对象有效负载)\ n位于 FireSharp.FirebaseClient.SetAsync [T](字符串路径,T数据)\ n在 FiresharpTest.Program.AddData()在 /Users/MYNAME/Desktop/C#Projects/FiresharpTest/FiresharpTest/Program.cs:40
---内部异常堆栈跟踪的结尾--- System.Threading.Tasks.Task.Wait(Int32毫秒超时, CancellationToken cancellingToken)\ n在 System.Threading.Tasks.Task.Wait()\ n在 FiresharpTest.Program.Main(String [] args)在 /Users/MYNAME/Desktop/C#Projects/FiresharpTest/FiresharpTest/Program.cs:28
答案 0 :(得分:0)
好的,所以此问题的原因是我安装了两个Firesharp
和Firesharp.Serialization.JsonNet
的Nuget软件包。
我删除了Firesharp
,然后对我的AddData()
函数进行了修改,所有这些都起作用了。
public static async Task AddData()
{
var data = new Data
{
id = "Hello",
text = "World"
};
SetResponse response = await client.SetTaskAsync("0", data); //Change to SetTaskAsync here
Data result = response.ResultAs<Data>();
}