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"一行来解决这个问题,但这并没有对问题产生影响。
这里的任何人都清楚为什么我的应用程序不允许我进入菜单页面吗?
谢谢
我已经解决了这个问题,相信我,我觉得自己很愚蠢!
从独立存储中检索用户 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));
}
}
这现在有效,所以如果有人有同样的问题,我希望它会有所帮助!