异步调用适用于控制台,但不适用于webapi

时间:2018-05-06 05:50:54

标签: c# firebase asp.net-web-api firebase-realtime-database firebase-authentication

我需要从C#WebApi连接到Firebase。

为此我创建了一个类库,它是连接到Firebase并检索信息的类。

当我从控制台应用程序调用此类库时,一切都运行顺利,但是当我尝试使用Postman从WebApi运行它时,它开始出现异步问题。特别是DeadLock正在发生。

我正在使用FirebaseDatabase.net nugget作为Firebase客户端。

修改

private async Task<string> LoginAsync()
    {
        var FirebaseApiKey = "XXXXXXXX";
        var authProvider = new FirebaseAuthProvider(new FirebaseConfig(FirebaseApiKey));
        var auth = await authProvider.SignInWithEmailAndPasswordAsync("myemail@mail.com", "mypassword");
        return auth.FirebaseToken;
    }

    public FirebaseClient getClient()
    {
        if (client == null)
        {
            client = new FirebaseClient("https://approach-197117.firebaseio.com", new FirebaseOptions
            {
                AuthTokenAsyncFactory = LoginAsync
            });
        }
        return client;
    }

    public static async Task<Dictionary<string, Location>> Run()
    {
        FirebaseConnect firebaseConnect = new FirebaseConnect().getInstance();
        var firebase = firebaseConnect.getClient();
        var list = await firebase.Child("Location").OnceSingleAsync<Dictionary<string, Location>>();
        return list;
    }

问题在于,当我尝试执行OnceSingleAsync请求位置时,该调用适用于控制台应用程序,但不适用于webapi调用

0 个答案:

没有答案