Windows Phone 7 Silverlight使用会话

我正在创建一个Windows 7移动Silverlight项目。 我使用Rest api进行身份validation,使用类认证 。 我得到一个身份validation令牌作为响应,并将其分配给类属性AuthToken,因为我需要在不同的地方使用它。 有没有办法将此AuthToken存储在会话或其他任何内容中。 因为我在wp7中没有找到任何会话示例。 谢谢

您没有找到任何会话示例,因为据我所知,WP7没有会话。 您应该能够使用独立存储来保持您的AuthToken。 但请记住,它会在一段时间后过期,就像你期望的那样。

有关示例,请参阅以下内容或谷歌搜索独立存储: http : //www.windowsphonegeek.com/tips/all-about-wp7-isolated-storage-store-data-in-isolatedstoragesettings

希望能帮助到你。 我没有做过大量的WP7开发,但我对Silverlight很熟悉。

如果您想要临时会话存储(应用程序的生命周期,包括用户使用后退按钮返回到您的应用程序),那么您可以使用电话状态 。 电话状态类似于ASP.NET中的会话状态。 它只是一个带有字符串键的(可序列化)对象的字典,并且不会在应用程序的启动时进行维护,但是当您的应用程序从后向堆栈导航到时,它将被恢复。

下面是一个用于恢复名为myObject的自定义对象的示例:

private CustomObject myObject; protected override void OnNavigatedFrom(NavigationEventArgs args) { //Save to State when leaving the page PhoneApplicationService.Current.State["myObject"] = myObject; base.OnNavigatedFrom(args); } protected override void OnNavigatedTo(NavigationEventArgs args) { if (PhoneApplicationService.Current.State.ContainsKey("myObject")) { //Restore from State myObject = (CustomObject)PhoneApplicationService.Current.State["myObject"]; } else { //No previous object, so perform initialization myObject = new myObject(); } } 

如果您需要在应用程序的所有实例中存储设置,请查看最适合的IsolatedStorageSettings 。 根据您的需求,还有其他选择( Charles Petzold提供免费的电子书和一些很好的例子 )。


不确定为什么上面的代码不适合你,但另一种选择是使用使用IsolatedStorageSettings保存的app属性。 这是一个例子:

在App.xaml.cs中:

  public bool VibrationOn { get; set; } private void Application_Launching(object sender, LaunchingEventArgs e) { LoadSettings(); } private void Application_Activated(object sender, ActivatedEventArgs e) { LoadSettings(); } private void Application_Deactivated(object sender, DeactivatedEventArgs e) { SaveSettings(); } private void Application_Closing(object sender, ClosingEventArgs e) { SaveSettings(); } private void LoadSettings() { IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; bool vo; if (settings.TryGetValue("VibrationOn", out vo)) VibrationOn = vo; else VibrationOn = true; } private void SaveSettings() { IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; settings["VibrationOn"] = VibrationOn; } 

然后,您可以使用以下代码在应用程序的任何位置访问此属性:

  if (Application.Current.VibrationOn) { VibrateController.Default.Start(TimeSpan.FromMilliseconds(200)); } 

假设您只想在当前应用程序实例的生命周期中使用它:

最简单的答案是将其存储为静态属性而不是实例属性。

简单的答案是将其存储为Application类(App.xaml.cs)的属性。 然后你可以使用((App)(Application.Current))在任何地方访问它。令牌

不太简单但可能更好的答案是将它存储在ViewModel属性中,然后您可以通过ViewModel定位器访问 – 例如,查看MVVM Light。

在所有这些情况下,您需要考虑Tombstoning,如果用户点击Start然后返回Back(例如),则恢复它。