最佳实践:我应该如何在C#(格式/类型)中存储设置?

时间:2009-02-11 06:42:33

标签: .net configuration settings

现在我很好奇在.net中存储/加载设置的可能性。例如,我需要为不同的数据库等存储用户名/密码..,我还需要存储一些选项等。

我虽然是创建[Seriazable]课程并将其保存到档案......

你能提出什么建议?什么是.net等的可能性。

5 个答案:

答案 0 :(得分:17)

.NET Framework提供了一些用于存储和加载应用程序和/或用户设置的机制。有关基础知识,请参阅“MSDN: Using Settings in C#”。

要加密配置文件中的某些敏感数据,您还可以使用.NET Framework的某些标准功能。如需简短介绍,请查看“Encrypting Configuration Information Using Protected Configuration”和“Encrypting Passwords in a .NET app.config File”。

答案 1 :(得分:4)

最常见的存储和加载设置的方法是使用某种XML数据,制作[Serializable]类并将序列化类输出到XML文件也可以,但是你必须保留以下内容:记:

  1. 您无法控制输入数据 - 因为可以在应用程序之外编辑XML文件,可以加载完全无意义的数据
  2. 您希望在XML中缺少节点时具有合理的默认值。这可能是由手动编辑引起的,或者是将旧版本的类加载到较新版本中。
  3. 我个人非常犹豫是否将任何密码存储在任何地方的配置文件中,而不使用某种非对称加密算法。如果我发现一个程序将我的密码以纯文本形式存储在XML文件中,我将停止使用该程序。

答案 2 :(得分:2)

如果要存储应用程序配置设置,可以利用App.Config或Web.Config文件中的“AppSettings”,具体取决于它是Windows还是Web应用程序。 我相信读取配置值的语法是

string configValue = Configuration.AppSettings["ConfigValueName"];

配置文件将如下所示

<configuration> 
  <appSettings>
    <add key="ConfigValueName" value="ABC"/>
  </appSettings>
</configuration>

可能还有很多其他东西。

如果您需要在系统中存储有关用户的信息或其他重复实体,则需要构建数据库并编写代码以持久存储/从数据库读取数据。

您可以使类可序列化并自动将其序列化为XML或Binary,或者您可以使用SQL数据库。有许多用于访问数据库的.net技术只需查看ADO.net,LINQ和实体框架。

答案 3 :(得分:1)

您可以将资源文件用于不太敏感的信息。对于用户名/密码,您需要使用ecrypted文本文件,或使用CSPs

答案 4 :(得分:0)

我建议将Ini文件App.Config存储在需要的位置...然后使用库 Config.Net 一个易于使用且功能强大的.NET配置库,完全包含单元测试,并在数千个服务器和应用程序中进行了野外测试。 在GitHub中找到它:https://github.com/aloneguid/config

因此,您可以将设置放在一个地方,以后,如果需要,可以移至另一个。