Мобильная служба Azure — стрелка назад учетной записи Windows дает InvalidOperationException

WAMS: проверка подлинности Microsoft.

http://azure.microsoft.com/en-us/documentation/articles/mobile-services-dotnet-backend-windows-store-dotnet-get-started-users/

Изменено с Facebook на MicrosoftAccount

ПРОБЛЕМА: когда я нажимаю стрелку назад (чтобы избежать входа в систему), она все еще должна быть в цикле while и вызывать другое всплывающее окно, никогда не позволяющее пользователю добиться успеха. Вместо этого он попал в

catch (InvalidOperationException)


private MobileServiceUser user;
private async System.Threading.Tasks.Task AuthenticateAsync()
{
   while (user == null)
   {
       string message;
       try
       {
            user = await App.MobileService
            .LoginAsync(MobileServiceAuthenticationProvider.MicrosoftAccount);
            message = 
            string.Format("You are now logged in - {0}", user.UserId);
       }
       catch (InvalidOperationException)
       {
           message = "You must log in. Login Required";
       }

       var dialog = new MessageDialog(message);
       dialog.Commands.Add(new UICommand("OK"));
       await dialog.ShowAsync();
    }
}

person Tom Stickel    schedule 18.04.2014    source источник
comment
Ну, если я удалю какие-либо точки останова, это сработает, я полагаю, что попадание в ловушку (InvalidOperationException) в порядке?   -  person Tom Stickel    schedule 18.04.2014


Ответы (1)


Когда вы отмените страницу аутентификации, ожидаемый вызов LoginAsync вызовет исключение InvalidOperationException. Это ожидаемо — вы попросили SDK войти в систему, операция входа не удалась, поэтому вы получаете исключение. Когда возникает исключение, присваивание полю user не происходит, поэтому оно сохраняет исходное значение (null), поэтому цикл продолжается. Если у вас есть точка останова в блоке catch и вы продолжаете после нажатия на точку останова (F5), он должен снова запросить аутентификацию.

person carlosfigueira    schedule 18.04.2014