Ошибка movenext при использовании асинхронного режима с формами xamarin

У меня есть проект форм Xamarin Android с использованием серверной части CodeIgniter с NuSoap.

В визуальной студии я создал проект ядра .NET для тестирования, добавил подключенный сервис к серверу. Создал асинхронную задачу для извлечения данных с сервера, все работало правильно.

var client = new TbqService.ServicePortTypeClient();
var loginTask = Task.Run(() => client.logInAsync("user", "password"));
echoTask.Wait();
Console.WriteLine($"Login result {loginTask.Result}");

Затем я выполнил ту же последовательность действий для приложения форм Xamarin, но получаю следующую ошибку. Я видел комментарии о настройке SSL на TLS 1.2 и удалении папки bin / obj и восстановлении. Ни то, ни другое не помогло.

{System.NullReferenceException: Object reference not set to an instance of an object.
 at MyThingApp.Models.DataConnect+<Login>d__13.MoveNext () [0x00023] in  
 D:\WebSites\TheMyThing_Projects\MyThingApp\MyThingApp\MyThingApp\Models\DataConnect.cs:31 }

Есть ли разница в том, как они работают, следует ли мне обращаться с ними по-разному?

    public async Task<bool> Login(string email, string password)
    {
        try
        {
            var c = new TbqService.ServicePortTypeClient();
            var result = await c.logInAsync(email, password); // line 31 in error
            return result.Contains("true");
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex);
        }

        return false;
    }

что такое строка 31 DataConnect, cs?

Jason 26.10.2018 04:58

var result = await c.logInAsync (электронная почта, пароль);

John Hughes 26.10.2018 14:44
0
2
285
1

Ответы 1

Похоже, что результат может возвращать ноль. И поэтому он вылетает, когда вы пытаетесь получить доступ к содержимому внутри результата. Добавьте нулевую проверку, и это должно устранить вашу ошибку.

if (result != null)
    return result.Contains("true");

Другие вопросы по теме