Приложение Xamarin (Android) не может получить доступ к серверу mongodb в локальной сети с физического устройства - PullRequest
0 голосов
/ 04 октября 2018

Я использую тестовую среду с несколькими физическими телефонами Android в моей локальной сети.В сети у меня есть сервер MongoDB, к которому я хочу получить доступ.

Я не могу подключиться из приложений, хотя тот же код прекрасно работает в обычном консольном приложении.Я гуглил это, но я нахожу информацию только о localhost (на котором запущен эмулятор и сервер / служба)

Чтобы ответить на несколько вопросов: Нет, я не могу сделать IP общедоступным и получить доступэто из интернета.Да, я пробовал несколько телефонов.Да, я посмотрел в разрешениях приложения.Нет, я не могу просто использовать бесплатный онлайн-сервис, потому что я тестирую, как миллионы запросов на запись / чтение будут загружать систему (поэтому мы можем судить о стоимости облачного сервиса по сравнению с внутренним хостингом).Да, я проверял, что он работает с онлайн-ресурсами (Azure cosmos db).

1 Ответ

0 голосов
/ 04 октября 2018

Я понял, (stackoverflow пошел вниз для обслуживания, поэтому я продолжил самостоятельно).

Оказалось, что я что-то упустил в моем "catch", поэтому он поймал ошибку, иничего не сделал, выдав результат "{}", потому что у меня были некоторые методы, вызывающие методы в других классах, вызывающие больше методов в большем количестве классов, никогда не было сообщения об ошибке.

Итак, рабочий код (стандартный код подключенияиз документации mongodb):

public async Task<string> LoginAsync(string name, string password)
    {
        if (!Ready) { Start(); }
        var builder = Builders<BsonDocument>.Filter;
        var filter = builder.Eq("nick", name) & builder.Eq("password", password);

        string output;

        try
        {
            var var1 = await CosmosUsersCollection.Find(filter).FirstAsync();
            output = var1.ToString();
        }
        catch (Exception ex)
        {
            // important for uncovering errors
            output = ex.Message;
        }

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