在C#中存储全局变量(如路径)的位置在哪里?

5

我是C#的新手,仍在研究某些事情的最佳实践。

我想知道在哪里可以存储设置,例如路径(例如用于文件上传)和其他各种变量,以便可以在项目中任何地方访问它们。

我应该只是创建一个具有静态变量的类,还是有更好的方法来存储这些设置?


在你的Web.Config(或App.Config)中?你可以为它们设置不同的构建设置和不同的配置文件。这也取决于你存储了什么。 - Benjamin Gruenbaum
现在我只对于有一个地方来存放我在控制器中引用的所有路径感兴趣。我会研究一下你提到的那些配置文件。 - Jack Zach Tibbles
如果是应用程序的全局设置和路径,那肯定是web.config文件 - 还可以参考https://dev59.com/XHfZa4cB1Zd3GeqPWM5W。当然你也可以自己编写 - 但是Web.Config文件的好处是在你更改并上传新版本时会重新启动服务器(嗯...有点复杂,我不想深入讨论无聊的细节)。 - Benjamin Gruenbaum
1
这个问题并没有正确或者错误的答案,应该基于你公司的最佳实践和可用性等因素来决定。例如,在我们公司中,我们使用自己的配置存储器在一个自定义的 XML 数据存储器中保存它,它拥有独立的安全机制。在这里,有很多可能性,从 app.config 到外部配置存储都可以选择。我建议先了解业务需要,然后再作出决定。 - asb
是的,我绝对可以看到使用web.config文件的价值。谢谢,我需要明天与相关人员核实所需内容。感谢大家的反馈 :) - Jack Zach Tibbles
1
可能最好的选择是使用定制的 XML 文件来存储设置的密钥和一个数据库表来存储值,这种解决方案适用于多个环境(DEV/STG/INT/PRD)。 - ale
1个回答

7

最好把这个保存在 web.config 文件中,因为编译后可以更改。

appSettings 元素专门用于此类功能。您甚至可以将此部分拆分到不同的文件中,以便在您特定的配置中完全清晰。

示例只有一个 web.config 文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="DocumentDirectory" value="~/Documents" />
    </appSettings>
</configuration>

Or:

web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings file="appSettings.xml" />
</configuration>

还有一个单独的appSettings.xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
    <add key="DocumentDirectory" value="~/Documents" />
</appSettings>

你可以这样读取那些设置:

请参阅此处

using System.Configuration;
using System.Web.Configuration;

Configuration config = WebConfigurationManager.OpenWebConfiguration(null);

if (config.AppSettings.Settings.Count > 0)
{
    KeyValueConfigurationElement customSetting = config.AppSettings.Settings["DocumentDirectory"];

    if (customSetting != null)
    {
        string directory = customSetting.Value;
    }
}

我该如何从我的控制器中访问这些值呢? - Jack Zach Tibbles
感谢您的反馈 :) - Jack Zach Tibbles
好的,@Patrick-hofman,但是在多个环境中,这个解决方案怎么适用呢? - ale
1
我更喜欢将设置拆分到不同的文件中。这样可以使部署变得更加容易。在您的部署中,创建一个名为 appSettings.xml.sample 的文件。它包含一个与上面相似的示例配置文件。在部署时,将该文件重命名为 appSettings.xml 并进行所需的配置。遵循此方法还可以防止在更新部署中覆盖 appSettings.xml 文件。 - Patrick Hofman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接