Чтение и редактирование конфигурации внутри Web.config - PullRequest
3 голосов
/ 04 мая 2011

У меня есть несколько настроек, которые нужно отредактировать из админ-панели сайта, над которым я сейчас работаю. Я подумал, что имеет смысл поместить эти настройки в web.config (или я должен разместить их где-нибудь еще?). Так или иначе, я пытаюсь написать необходимый код для этого, но я застрял ... Это первый раз, когда мне действительно нужно было сделать это так ... :) Вот что у меня так далеко:

раздел appSettings внутри Web.config:

  <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 голосов
/ 04 мая 2011

Вы определенно не хотите изменять файл web.config, так как каждый раз, когда вы это делаете, ваше приложение просто перезапускается.В случае изменения файла web.config ASP.NET немедленно выгружает домен приложения.Файл web.config используется для хранения статической конфигурации приложения только для чтения.Если вам нужно сохранить настройки, которые нужно изменить, web.config - не то место.Вы можете использовать пользовательский файл, сеанс, куки, базу данных, ...

...