【问题标题】:What is the best practice for storing settings in a .Net Winforms app that may be deployed in a Citrix environment?将设置存储在可能部署在 Citrix 环境中的 .Net Winforms 应用程序中的最佳做法是什么?
【发布时间】:2010-11-10 11:10:46
【问题描述】:

我有一个桌面应用程序,它在第一次执行时提示输入数据库的连接详细信息,然后我想保留它们以供将来使用(作为加密字符串),以便下次用户启动应用程序时它们可以重复使用。现在客户端运行一个我以前没有真正接触过的 citrix 环境,我想确保这个加密的数据库字符串以这样一种方式保存,即无论用户从哪里登录,它都可供用户使用 - 我认为我要说的是应用程序需要知道他们的漫游配置文件中的这个设置,但这是我之前真正不必担心的事情,所以我只是检查是否有任何我需要的陷阱请注意。

通常我只在 .Net 中使用 My.Settings 命名空间,但在这种环境中会不会减少它?

如果有人知道保存用户设置的“最佳做法”,让漫游用户在从新位置登录时不会再被要求再次输入设置,我将不胜感激。

之所以这样设置DB连接,是因为有一个Test和一个Live数据库,用户可以切换(相同的数据库,不同的服务器)。

将实时和测试连接字符串存储在 app.config 中并允许管理员在安装后手动更新它们,然后在 UI 中提供从测试到实时的切换会更好吗?

我通常在 asp.net 网站上工作,所有东西都在 web.config 中愉快地生活,所以这有点超出了我的舒适区。我可以在书中看到很多选项,但我想知道是否有人对哪种技术最适合他们有任何建议?

我正在使用 VB.Net 3.5 (Visual Studio 2010)。这是一个 Windows 窗体项目,在实际数据库访问发生的解决方案中包含少量 .dll 库。

【问题讨论】:

    标签: .net winforms settings citrix


    【解决方案1】:

    正如您已经写过的,您需要确保保存的设置最终出现在配置文件的漫游部分。这可以是注册表配置单元 HKEY_CURRENT_USER 或解析为 %USERPROFILE%\AppData\Roaming 的文件夹 %APPDATA%(在 Vista 和更高版本上,但在旧操作系统上也可以是特定于区域设置的漫游 AppData 文件夹)。

    在 .NET 中,用户特定的设置可以存储在用户配置文件的漫游和本地部分。为了使设置漫游,需要将“漫游”属性设置为 true。有关说明以及实际保存设置的路径,请参阅本文:

    http://www.codeproject.com/KB/vb/appsettings2005.aspx

    【讨论】:

    • 我要去调查这个 Helge,我没有发现那个“漫游”属性——那可能就是我要找的那颗罗塞塔石碑 :)
    • 漫游设置似乎在我的机器上工作,并且 user.config 被写入漫游文件夹而不是 Localdata 文件夹但是我在数据访问层中获取 My.Settings 值时遇到了麻烦这是在不同的项目中,所以显然不能使用 My.Settings 包装器。我设法使用这个变体来获得价值:
    • (导入 system.configuration) Dim config As System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoaming) Dim section As System.Configuration.ClientSettingsSection = CType(config.GetSection ("userSettings/AppName.My.MySettings"), ClientSettingsSection) Dim Value as string= section.Settings.Get("ActiveDSN").Value.ValueXml.InnerText
    • 这样工作是否足够好?换句话说:您的问题得到解答了吗?
    • 是的 - 这足以让我重新开始。这里有“标记为答案”选项吗?我一个都看不到。
    【解决方案2】:

    如果您事先知道连接字符串,则可以将它们存储在 app.config 中,并在应用程序开始时要求用户通过 ComboBox 选择连接。

    如果你事先不知道连接字符串,我可以考虑以下选项:
    1- 使用您知道其连接字符串的数据库或本地数据库 SqlServerCE .sdf 文件来存储这些信息。
    2- 使用 .Net 中的用户设置,可通过 C# 中的 Properties.Settings.Default.NameofSetting 访问。

    【讨论】:

    • 老实说,这将是我的首选方式,但桌面应用程序会面向许多客户,我担心会意外泄露他们之间的连接细节,所以我宁愿他们配置它现场根据自己的要求。此外,我不想以纯文本形式存储配置数据,如果客户必须先加密这些值,我认为这样使用它会太尴尬。
    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 2021-08-04
    • 2011-08-22
    • 2010-09-06
    • 2016-10-09
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多