создать свои собственные настройки в XML - PullRequest
4 голосов
/ 28 декабря 2008

Я нахожусь в проекте ASP.NET, где мне нужно дать несколько параметров администратору, который собирается установить сайт, например:

AllowUserToChangePanelLayout
AllowUserToDeleteCompany

и т.д ...

У меня вопрос, будет ли хорошо добавить это в файл web.config, используя мою собственную configSession или добавить в качестве переменных профиля? или я должен создать XML-файл для этого?

Что вы делаете и каковы минусы и плюсы?

Изначально я думал о web.config, но потом понял, что мне нужно испортить настройки веб-сайта и конфигурацию моего собственного веб-приложения и что мне нужно создать другой файл, их я прочитал в этом посте Я нахожусь на этом месте ... я должен сделать то или это?

Ответы [ 3 ]

12 голосов
/ 28 декабря 2008

Я обычно использую Настройки - доступно через свойства проекта - Настройки. Их можно редактировать и сохранять в коде, и я пишу форму / веб-страницу для их редактирования.

Если вы хотите использовать конфигурацию XML, есть атрибут с именем file, который читает внешние файлы. Вы можете иметь файл web.config и файл someothername.config. Someothername.config будет иметь такие настройки, как:

<appSettings>
    <add key="ConnString" value="my conn string" />
    <add key="MaxUsers" value="50" />
</appSettings>

И web.config будет иметь

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings file="ExternalWeb.config">
        <add key="MyKey" value="MyValue" />
    </appSettings>
</configuration>

См. DevX для примера, который я украл.

2 голосов
/ 28 декабря 2008

просто, чтобы вы, ребята, знали, что я сделал то, что конфигуратор рекомендовал, но с изюминкой.

вместо того, чтобы все время (что мне нужно) просить

System.Configuration.ConfigurationManager.AppSettings["myKey"];

Я только что создал статический класс, который будет извлекать эти значения из того, что мы называем строго типизированными значениями (поэтому вам не нужно помнить все значения)

mySettings класс

public static class mySettings
{
    public enum SettingsType
    { UserPermitions, WebService, Alerts }
    public enum SectionType
    { AllowChangeLayout, AllowUserDelete, MaximumReturnsFromSearch, MaximumOnBatch, SendTo }

    public static String GetSettings(SettingsType type, SectionType section)
    {
        return
            ConfigurationManager.AppSettings[
                String.Format("{0}_{1}",
                    Enum.Parse(typeof(SettingsType), type.ToString()).ToString(),
                    Enum.Parse(typeof(SectionType), section.ToString()).ToString())
            ];
    }
}

web.config appSettings part

<configuration>
  <appSettings file="myApp.config">
    <add key="UserPermitions_AllowChangeLayout" value="" />
    <add key="UserPermitions_AllowUserDelete" value="" />    

    <add key="WebService_MaximumReturnsFromSearch" value="" /> 

    <add key="Alerts_SendTo" value="" />
    <add key="Alerts_MaximumOnBatch" value="" />
  </appSettings>
</configuration>

весь myApp.config файл

<?xml version="1.0" encoding="utf-8" ?>
<!--
###
### This file serves the propose of a quick configuration.
### Administrator can either change this values directly or use the 
###   Settings tab in the application.
###
-->
<appSettings>

  <!-- *** User Access Configuration *** -->
  <!-- Allow user to change the panels layout {1: Yes} {0: No} -->
  <add key="UserPermitions_AllowChangeLayout" value="1" />
  <!-- Allow user to delete a company fro monitoring -->
  <add key="UserPermitions_AllowUserDelete" value="1" />

  <!-- *** Web Service configuration *** -->
  <!-- Maximum responses from the search service -->
  <add key="WebService_MaximumReturnsFromSearch" value="10" />

  <!-- *** Allerts configuration *** -->
  <!-- Send the alerts to the email writeen below -->
  <add key="Alerts_SendTo" value="bruno.in.dk@gmail.com" />
  <!-- Send an alert when user import more than the number bellow -->
  <add key="Alerts_MaximumOnBatch" value="10" />

</appSettings>

Итак, теперь я звоню так:

p.value = mySettings.GetSettings(
             mySettings.SettingsType.WebService, 
             mySettings.SectionType.MaximumReturnsFromSearch);

Надеюсь, это поможет кому-то с такой же проблемой:)

1 голос
/ 18 февраля 2016

Вы также можете поместить свои конфигурации в файл настроек. В вашем проекте откройте Свойства и перейдите в Настройки, которые выглядят вроде так

Чтобы получить доступ к значениям в вашем коде, используйте Properties.Settings.YourSettingName;

Используйте Properties.Settings.Default.Reload(); для обновления настроек во время выполнения

...