1

我正在使用 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# 相当陌生。我哪里出错了?

我在 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, Culture=neutral, 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 contract)\n 在 Newtonsoft.Json.Serialization.DefaultContractResolver.CreateObjectContract(Type objectType)\n 在 Newtonsoft.Json.Serialization.DefaultContractResolver.CreateContract(Type objectType)\n 在 Newtonsoft.Json.Serialization。 DefaultContractResolver.ResolveContract(Type type)\n 在 Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value, Type 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 在 /Users/MYNAME/Desktop/C#Projects/FiresharpTest/FiresharpTest/Program.cs:40 中的 FiresharpTest.Program.AddData()

--- 内部异常堆栈跟踪结束 --- 在 System.Threading.Tasks.Task.Wait(Int32 毫秒超时,CancellationToken cancelToken)\n 在 System.Threading.Tasks.Task.Wait()\n 在 FiresharpTest.Program。 /Users/MYNAME/Desktop/C#Projects/FiresharpTest/FiresharpTest/Program.cs:28 中的 Main(String[] args)

4

1 回答 1

0

好的,所以这个问题的问题是我安装了两个 Nuget 包,Firesharp并且Firesharp.Serialization.JsonNet.

我删除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>();
}
于 2019-05-09T15:06:58.443 回答