Windows Phone 8 單一登入例外

本文关键字:Phone Windows | 更新日期: 2023-09-27 17:56:05

我正在Windows Azure和Windows Phone 8应用程序上制作云服务。在应用程序中,我正在编写代码来处理单点登录服务,选择提供程序后,用户 ID 将保存到受保护的存储中,并且用户将导航到登录成功页面。但是,有一个问题,当关闭应用程序并返回它时,有一种方法可以检查存储中的用户 ID,这根本没有问题,但是当导航到应用程序主菜单时,尝试/捕获会捕获异常,并且用户被导航回登录页面,就好像他们没有登录一样。

这是检查用户标识的方法:

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        try
        {
            byte[] ProtectedPinByte = this.ReadPinFromFile();
            byte[] PinByte = ProtectedData.Unprotect(ProtectedPinByte, null);
            App.MobileService.CurrentUser.UserId = Encoding.UTF8.GetString(PinByte, 0, PinByte.Length);
            FilePath = App.MobileService.CurrentUser.UserId;
            NavigationService.Navigate(new Uri("/Views/Menu.xaml", UriKind.Relative));
        }
        catch
        {
            NavigationService.Navigate(new Uri("/LoginScreens/LoginSelection.xaml", UriKind.Relative));
        }
    }

用户 ID 似乎没有分配给对象,这是异常的原因,我试图用"FilePath = App.MobileService.CurrentUser.UserId"一行来解决这个问题,但这并没有对问题产生影响。

这里的任何人都清楚为什么我的应用程序不允许我进入菜单页面吗?

谢谢

Windows Phone 8 單一登入例外

我已经解决了这个问题,相信我,我觉得自己很愚蠢!

从独立存储中检索用户 id 后,我没有声明一个字符串来保存用户 ID,这是字符串:

private string storedUser;

我还稍微更改了方法以反映新字符串:

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        try
        {
            byte[] ProtectedPinByte = this.ReadPinFromFile();
            byte[] PinByte = ProtectedData.Unprotect(ProtectedPinByte, null);
            storedUser = Encoding.UTF8.GetString(PinByte, 0, PinByte.Length);
            NavigationService.Navigate(new Uri("/Views/Menu.xaml", UriKind.Relative));
        }
        catch
        {
            NavigationService.Navigate(new Uri("/LoginScreens/LoginSelection.xaml", UriKind.Relative));
        }
    }

这现在有效,所以如果有人有同样的问题,我希望它会有所帮助!