关于 web.config 里自定义节点的设置和读取

来源:互联网 发布:商城优化 编辑:程序博客网 时间:2024/06/10 10:56

1. 对于web.config 的设置的问题

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
 
 <configSections>
  <section name="DocManagerConfiguration" type="DocManager.Common.DocManagerConfigurationHandler1, DocManager.Common"/>
 </configSections>

 <DocManagerConfiguration>
  <add key="WebDAL" value="DocManager.SyBaseDAL"/>
  <add key="DatabaseType" value="SyBase"/>
  <add key="IsEncrypt" value="false"></add>
  <add key="DefaultNameSpace" value="http://www.seaskylight.com/"></add>
  <add key="EnableDataAccessTrace" value="false"></add>
 </DocManagerConfiguration>
</configuration>

配置如上

新建一个类实现 IConfigurationSectionHandler 接口

 public object Create(object parent, object configContext, System.Xml.XmlNode section)
        {
            DocManagerConfiguration config = new DocManagerConfiguration();
            NameValueCollection settings;
            try
            {
                NameValueSectionHandler baseHandler = new NameValueSectionHandler();
                settings = (NameValueCollection)baseHandler.Create(parent, configContext, section);
            }
            catch
            {
                settings = null;
            }          
         
            if (settings != null)
            {
                Alogrim alogrimClass = new Alogrim(Alogrim.SymmProvEnum.RC2);
                alogrimClass.IV = "DocManager";
                alogrimClass.Key = "DocManager";
                if (bool.Parse(settings["IsEncrypt"]))
                {
                    if (ConfigurationManager.ConnectionStrings["DatabaseConnectionString"] != null)
                        config.DatabaseConnectionString = alogrimClass.Decrypting(ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString);

                    config.DefaultNameSpace = alogrimClass.Decrypting((string)settings["DefaultNameSpace"]);
                    config.EnableDataAccessTrace = bool.Parse(alogrimClass.Decrypting((string)settings["EnableDataAccessTrace"]));
                    config.WebDAL = alogrimClass.Decrypting((string)settings["WebDAL"]);

                }
                else
                {
                    if (ConfigurationManager.ConnectionStrings["DatabaseConnectionString"] != null)
                        config.DatabaseConnectionString = ConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ToString();
                    if (settings["DatabaseType"] != null)
                        config.DatabaseType = settings["DatabaseType"];
                    if (settings["EnableDataAccessTrace"] != null)
                        config.EnableDataAccessTrace = bool.Parse(settings["EnableDataAccessTrace"]);
                    if (settings["WebDAL"] != null)
                        config.WebDAL = settings["WebDAL"];

                }
            }
            return config;
        }

 

 

3. 如何读取的问题

(DocManagerConfiguration)ConfigurationManager.GetSection("DocManagerConfiguration");

 

 

 

 

 

原创粉丝点击