在Windows 10中访问本地设置

时间:2016-07-25 13:50:59

标签: wpf configuration windows-10 tablet application-settings

我正在为客户开发一个业务线应用程序。客户端指定了应该使用的设备(某些戴着Windows 8.1的戴尔平板电脑)。现在,开发工作已基本完成,我们已准备好发布应用程序的第一阶段,客户告诉我们他们已经改变了主意,所有戴尔平板电脑都将运行Windows 10.我升级了一个用于开发的平板电脑并测试到Windows 10。平板电脑使用RESTful Web API访问存储库中存储的数据。显然,在应用程序可以从存储库中检索任何数据之前,必须在应用程序的设置中配置Web API的URL。 因此,我创建了应用程序包以在平板电脑上侧载应用程序。安装正常,应用程序第一次启动良好。我进入设置,设置URL并关闭应用程序。 当我尝试重新启动时,应用程序卡住显示启动画面。如果我尝试访问“设置”,系统会通知我当时的应用设置无法使用。摆脱这种情况的唯一方法是卸载应用程序并重新安装。

这是我用来保存和检索设置的代码:

  public void SaveSetting<T>(string settingName, T value)
  {
     ApplicationData.Current.LocalSettings.Values[settingName] = value;
  }

  public T GetSetting<T>(string settingName)
  {
     var localSettings = ApplicationData.Current.LocalSettings.Values;

     if (localSettings.ContainsKey(settingName))
     {
        var value = localSettings[settingName];

        if (value is T)
        {
           return (T)value;
        }
     }
     // else, in all other cases
     return default(T);
  }

我注意到一件有趣的事情,有时候,根据我尝试在设置中保存的内容,应用程序会启动。例如,我正在玩它并尝试保存一些垃圾而不是正确的URL。所以不是“http://x.x.x.x:nnnnn”,而是保存了“a”。该应用程序启动正常,我通过了启动画面,但很明显,我无法获得任何数据。

关于到底发生了什么的任何想法?在Windows 10中,本地设置的访问方法是否发生了变化?

过去几天我一直在摸不着头脑。最初,我认为创建本地设置文件是一个权限问题,所以我投入了大量精力试图从这个角度找到解决方案。但是,正如我所说,如果我在设置中转储一些垃圾,它就可以工作,所以这不是权限问题。可能是这样的,像“x.x.x.x”这样的IP地址需要以不同于字符串的方式保存吗?

任何建议都将受到高度赞赏。

TIA, 埃迪

1 个答案:

答案 0 :(得分:0)

在我将一些日志记录添加到我的应用程序后,我能够证明该应用程序没有读取设置的问题。这是它试图与它们做的事情,它没有用。从设置中读取的URL是正确的,但是当应用程序尝试调用Web API时,调用会引发异常并且应用程序停止工作。所以这不应该是一个问题。 谢谢,艾迪