在xml中创建自己的设置

时间:2008-12-28 12:41:14

标签: c# asp.net configuration-files

我在一个ASP.NET项目中,我需要为要安装网站的管理员提供几个参数,例如:

AllowUserToChangePanelLayout
AllowUserToDeleteCompany

等...

我的问题是,将这个添加到web.config文件中,使用我自己的configSession或添加为个人资料varibles会是一件好事吗?或者我应该为此创建一个XML文件?

你做什么,有什么缺点和好处?

我最初想过web.config,但后来才意识到我应该搞乱网站配置和我自己的网络应用配置,我应该创建一个不同的文件,我读this post,现在我是在这个地方......我应该这样做还是那个?

3 个答案:

答案 0 :(得分:12)

我通常使用设置 - 可通过项目属性 - 设置获得。这些可以编辑并保存在代码中,我写一个表单/网页来编辑它们。

如果要使用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

答案 1 :(得分:2)

只是为了让你们知道我做了configurator推荐的但是有所改变。

而不是一直询问(我需要)

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部分

<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);

希望能帮助有同样问题的人:)

答案 2 :(得分:1)

您也可以将配置放在设置文件中。在您的项目中,打开“属性”并转到“外观设置” like so

要访问代码中的值,请使用Properties.Settings.YourSettingName;

使用Properties.Settings.Default.Reload();在运行时刷新设置