读取和编辑Web.config中的配置

3
我有一些需要从我目前正在工作的网站的管理面板中编辑的设置。我认为将这些设置放置在web.config中是合理的(或者我应该把它们放在其他地方吗?)。所以无论如何,我正在尝试编写必要的代码来完成这个任务,但我卡住了......这是我第一次实际需要做这件事,所以...... :) 这是我目前所拥有的:

Web.config 中的 appSettings 部分:

  <appSettings>
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="InvitationOnly" value="true" />
    <add key="MaintainanceMode" value ="false"/>
  </appSettings>

这里是我正在尝试编写的一个类,它允许轻松检索和修改将放置在appSettings部分中的某些值:
public static class SiteSettings
{
    public static bool InvitationOnly
    {
        get
        {
            var invitation = WebConfigurationManager.AppSettings["InvitationOnly"];
            return Convert.ToBoolean(invitation);
        } 
        set
        {
            Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
            var appSettings = config.GetSection("appSettings") as AppSettingsSection;
            if(appSettings != null)
            {
                //got stuck here...
            }
        }
    }
}

我是否在正确的轨道上?我该如何从这里继续?
顺便问一下,将站点设置放在 web.config 中安全吗?我需要担心什么吗?
谢谢。
1个回答

7

您绝对不希望修改web.config文件,因为每次这样做时,应用程序都会重新启动。如果修改了web.config,ASP.NET将立即卸载AppDomain。web.config用于存储应用程序的静态只读配置。如果需要存储必须进行修改的设置,则web.config不是正确的位置。您可以使用自定义文件、会话、cookie、数据库等。


是的,我在某个地方读到过编辑web.config文件会重新启动应用程序,但这究竟意味着什么?你所说的卸载AppDomain是什么意思?最后,我想最好将这些数据存储在XML文件中,你觉得呢? - Kassem
@Kassem,这意味着应用程序已从内存中卸载并且所有请求都被中止。这意味着您可能在内存中存储的任何内容都将丢失,并且Application_Start事件将在后续请求中触发。至于什么是“最好的”,很难说,因为您没有提供足够有关您场景的详细信息。只需注意,如果您选择XML文件路线,请不要忘记同步对此文件的访问,因为当管理员正在写入它时,如果某个用户同时尝试读取,则可能会遇到问题。 - Darin Dimitrov
哦,我绝对不希望发生那种情况。谢谢你的警告!关于 XML 文件...只有管理员才能写入此文件。但是,是的,用户将从该文件中读取。你有什么具体需要研究的提示吗? - Kassem

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