Асинхронный вызов работает на консоли, но не на веб-интерфейс - PullRequest
0 голосов
/ 06 мая 2018

Мне нужно подключиться к Firebase из C # WebApi.

Для этого я создал библиотеку классов, которая подключается к Firebase и получает информацию.

Когда я вызываю эту библиотеку классов из консольного приложения, все работает гладко, но когда я пытаюсь запустить ее из WebApi с помощью Postman, у него возникают проблемы с асинхронностью. В частности, происходит DeadLock.

Я использую слепок FirebaseDatabase.net в качестве клиента Firebase.

EDIT

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, запрашивающий Location, вызов работает в консольном приложении, но не работает при вызове webapi

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...