Firesharp:执行请求时发生错误。路径:0 /,方法:PUT

时间:2019-04-29 14:02:24

标签: c# firebase firebase-realtime-database fire-sharp

我正在使用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

1 个答案:

答案 0 :(得分:0)

好的,所以此问题的原因是我安装了两个FiresharpFiresharp.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>();
}