2013-03-22 63 views
1

我有IsolatedStorage文件。如果文件存在,我想重定向到登录页面或创建帐户页面。的Windows Phone 8 - 导航错误

如果犯规存在的文件,应用程序进入到页面,将密码创建并保存,和应用程序重定向到登录页面。但是,如果IsolatedStorage中的文件存在,它不会直接。

private void fileExists() 
     { 
      IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); 
      if (store.FileExists("passwordFile")) 
      { 
       //NavigationService.Navigate(new Uri("/Login.xaml", UriKind.Relative)); 
       MessageBox.Show("Should be redirecting here"); 
      } 

      else 
      { 
       MessageBox.Show("Welcome. Please create an account. Ensure that you remember your password!"); 
      } 
     } 

实际的消息做节目,所以它被称为如果一个文件不存在,则执行别的,所以我的逻辑是合理的。

FileExists()功能这里所说的。

public MainPage() 
     { 
      InitializeComponent(); 
      fileExists(); 
     } 

其他重定向发生在这里

if ((password1.Password == password2.Password) & (password1.Password.Trim().Length > 0 || password2.Password.Trim().Length > 0)) 
      { 
       byte[] PasswordByte = Encoding.UTF8.GetBytes(password1.Password); 
       byte[] ProtectedPassword = ProtectedData.Protect(PasswordByte, null); 
       this.WritePasswordToFile(ProtectedPassword); 

       NavigationService.Navigate(new Uri("/Login.xaml", UriKind.Relative)); 
      } 

错误是System.NullReferenceException但在用户代码中没有处理。

+0

真正offtopic在这里,请散列或加密你的密码文件,具有一些奇特的编码和改装WP8很容易访问isolatedStorage – EaterOfCode 2013-03-22 10:41:35

+1

我会的,这是真的只是开始!我刚开始的C#和WP昨天和加密的项目,而不是东西,我会看几个星期的很大一部分。虽然谢谢! – 2013-03-22 10:44:57

回答

1

曾试图调用该文件存在检查负载的MainPage?这可能是存储准备问题,即使它正在执行。其次,如果你可以提到发生确切的异常的地方。也请检查这个link,这可能会帮助你。

+0

该文件肯定存在。如果我注释掉导航部分,它将返回true并显示一个消息框,所以文件肯定存在。 导航线处的fileExists()函数发生异常(注释如上) 我将通过该链接看看,看起来不错,但逻辑上,我无法弄清楚为什么它应该导致异常的地方,而不是其他地方,特别是其他代码运行良好时。 – 2013-03-22 10:47:54

+0

也试着把检查代码放在页面的加载事件中。 – 2013-03-22 10:53:29

1

的问题是,NavigationService仍然是空,你可以通过把一个断点重定向行验证, 把同样的代码在MainPage.Loaded事件,它会工作的话,(我期望它的工作再)

因为我希望这只是一个重定向页面,您可以检查该文件中的初始化和保存URI在类重定向并在页面加载

0

重定向我需要从移动FILEEXISTS()构造函数到一个新的函数。

protected override void OnNavigatedTo(NavigationEventArgs e) 
     { 
      base.OnNavigatedTo(e); 
      fileExists(); 
     }