dnn 的web.config 分析

   首先出现的<sectionGroup name="dotnetnuke">里面使用IConfigurationSectionHandle派生的类DotNetNuke.Framework.Providers命名空间下的ProviderConfigurationHandler进行自定义的控制,在web.config的后面使用了

<dotnetnuke></dotnetnuke>这个节,对于数据节,我们可以看到

 

 

<data defaultProvider="SqlDataProvider">

<providers>

<clear/>

<add name="SqlDataProvider" type="DotNetNuke.Data.SqlDataProvider, DotNetNuke.SqlDataProvider" connectionStringName="SiteSqlServer" upgradeConnectionString="" providerPath="~/Providers/DataProviders/SqlDataProvider/" objectQualifier="dnn_" databaseOwner="dbo"/>

</providers>

</data>

 

 

这个data 是被以下代码分析

 

 

public virtual object Create(object parent, object context, System.Xml.XmlNode node)

{

ProviderConfiguration objProviderConfiguration = new ProviderConfiguration();

objProviderConfiguration.LoadValuesFromConfigurationXml(node);

return objProviderConfiguration;

}

 

然后在ProviderConfiguration类中的以下代码调用

 

internal void LoadValuesFromConfigurationXml(XmlNode node)

{

XmlAttributeCollection attributeCollection = node.Attributes;

_DefaultProvider = attributeCollection["defaultProvider"].Value;

foreach (XmlNode child in node.ChildNodes) {

if (child.Name == "providers") {

GetProviders(child);

}

}

}

internal void GetProviders(XmlNode node)

{

foreach (XmlNode Provider in node.ChildNodes) {

switch (Provider.Name) {

case "add":

Providers.Add(Provider.Attributes["name"].Value, new Provider(Provider.Attributes));

break;

case "remove":

Providers.Remove(Provider.Attributes["name"].Value);

break;

case "clear":

Providers.Clear();

break;

}

}

}

 

 

以上代码对providers这个节点 里面的数据进行了过滤,add,remove,clear ,保存了DefaultProvider,是通过xml 的atrribue属性

 

当把配置节用hashtale保存好以后,在后面的模块的数据库开发中的类 class SqlDataProvider,可以看到

 

private ProviderConfiguration _providerConfiguration = ProviderConfiguration.GetProviderConfiguration(ProviderType);

ProviderType就是data节,得到providerConfiguration后就可以读取属性了

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值