Enterprise Library 2.0 技巧(1):如何使用外部配置文件

摘要:我们知道在Enterprise Library1.1中对于每一个应用程序块都有一个对应的配置文件,而在Enterprise Library2.0中却把所有的配置信息都放在了应用程序配置文件(App.configWeb.config)中,在2.0下,我们如何使用外部配置文件?如何为每个应用程序块创建对应的配置文件?

 

主要内容

1.不使用外部配置文件

2.使用不同的ConfigurationSource

3.使用多个ConfigurationSource

4.使用.NETconfigSource特性

 

一.不使用外部配置文件

我们先来看一个简单的使用Enterprise Library的例子,在这个示例中,使用了企业库的Data Access Application Block Excepiton Handling Application Block

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;

using Microsoft.Practices.EnterpriseLibrary.Data;

using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;

namespace EntLibConfig
{
    
class Program
    
{
        
static void Main(string[] args)
        
{
            
try
            
{
                Database db 
= DatabaseFactory.CreateDatabase("EntLibInstance");

                db.ExecuteNonQuery(
"ProcName");
            }

            
catch (Exception ex)
            
{
                
if (ExceptionPolicy.HandleException(ex, "Event Policy"))

                    
throw;
            }

        }

    }

}

使用Enterprise Library Configuration配置之后,App.config文件如下:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  
<configSections>

    
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

    
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

  
</configSections>

  
<exceptionHandling>

    
<exceptionPolicies>

      
<add name="Event Policy">

        
<exceptionTypes>

          
<add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

            postHandlingAction
="ThrowNewException" name="Exception">

            
<exceptionHandlers>

              
<add exceptionMessage="This is a test!" replaceExceptionType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionHandlingException, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                type
="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ReplaceHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                name
="Replace Handler" />

            
</exceptionHandlers>

          
</add>

        
</exceptionTypes>

      
</add>

    
</exceptionPolicies>

  
</exceptionHandling>

  
<dataConfiguration defaultDatabase="EntLibInstance" />

  
<connectionStrings>

    
<add name="EntLibInstance" connectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Database=Northwind;"

      providerName
="System.Data.SqlClient" />

  
</connectionStrings>

</configuration>

我们知道在EL1.1下,对于不同的应用程序块是放在了不同的配置文件中,而到了2.0中可以看到,所有的配置信息都放在了应用程序配置文件中(App.config或者Web.config)。但是很多时候配置文件中有很多的信息也是我们自己手动添加的,如果这些混合在一起会显得非常混乱,所以我们并不想把所有的配置信息都放在应用程序配置文件中,该如何实现呢?Tom Hollander给了我们几种可行的方案。

二.使用不用的ConfigurationSource

Enterprise Library2.0使用实现了IConfigurationSource接口的类来获取配置信息,默认情况下将获取SystemConfigurationSource,就像上面的例子,但是它允许我们配置应用程序来使用不同的ConfigurationSource,下面来看一下具体的使用。

EntLibConfig.exe打开配置文件后,在配置文件节点上选择New | ConfigurationSources

















并新建一个File Configuration Source,指定文件的路径和文件名
Configuration Source节点设置SelectSourceFile Configuration Source

保存配置后,此时就有了两个配置文件,App.configexternal.config,分别看一下这两个文件中的内容:

App.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  
<configSections>

    
<section name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

  
</configSections>

  
<enterpriseLibrary.ConfigurationSource selectedSource="File Configuration Source">

    
<sources>

      
<add name="File Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

        filePath
="D:\Visual Studio2005 Project\EntLibConfig\EntLibConfig\external.config" />

      
<add name="System Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

    
</sources>

  
</enterpriseLibrary.ConfigurationSource>

 
</configuration>

external.config

<configuration>

    
<configSections>

        
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

        
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

    
</configSections>

    
<exceptionHandling>

        
<exceptionPolicies>

            
<add name="Event Policy">

                
<exceptionTypes>

                    
<add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

                        postHandlingAction
="ThrowNewException" name="Exception">

                        
<exceptionHandlers>

                            
<add exceptionMessage="This is a test!" replaceExceptionType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionHandlingException, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                                type
="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ReplaceHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                                name
="Replace Handler" />

                        
</exceptionHandlers>

                    
</add>

                
</exceptionTypes>

            
</add>

        
</exceptionPolicies>

    
</exceptionHandling>

    
<dataConfiguration defaultDatabase="EntLibInstance" />

    
<connectionStrings>

        
<add name="EntLibInstance" connectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Database=Northwind;"

            providerName
="System.Data.SqlClient" />

    
</connectionStrings>

</configuration>

三.使用多个ConfigurationSource

当然了上面的解决方案我们可以看到,还是存在一些问题,首先使用external.config仅仅是把应用程序配置文件中的一部分分割出去放在了external.config中,我们仍然需要App.config文件来指定使用的是哪一个ConfigurationSource;其次两个应用程序块的配置信息放在了同一个文件中。这样我们就考虑对每一个应用程序块都能有一个配置文件,并且不使用App.config文件来指定使用哪一个,这样就要用编程的方法,可以使用静态的DatabaseFactoryExceptionPolicy,如下面的例子所示:

static void Main(string[] args)
{
    
try
    
{
        FileConfigurationSource dataSource 
= new FileConfigurationSource("data-filesource.config");

        DatabaseProviderFactory dbFactory 
= new DatabaseProviderFactory(dataSource);

        Database db 
= dbFactory.Create("EntLibInstance");

        db.ExecuteNonQuery(
"ProcName");

    }

    
catch (Exception ex)
    
{
        FileConfigurationSource exceptionsSource 
= new FileConfigurationSource("exceptions-filesource.config");

        ExceptionPolicyFactory exceptionFactory 
= new ExceptionPolicyFactory(exceptionsSource);

        ExceptionPolicyImpl exceptionPolicy 
= exceptionFactory.Create("Event Policy");

        
if (exceptionPolicy.HandleException(ex))

            
throw;
    }

}

data-filesource.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  
<configSections>

    
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

  
</configSections>

  
<dataConfiguration defaultDatabase="EntLibInstance" />

  
<connectionStrings>

    
<add name="EntLibInstance" connectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Database=Northwind;"

        providerName
="System.Data.SqlClient" />

  
</connectionStrings>

</configuration>

exceptions.filesource.config

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  
<configSections>

    
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

  
</configSections>

  
<exceptionHandling>

    
<exceptionPolicies>

      
<add name="Event Policy">

        
<exceptionTypes>

          
<add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

              postHandlingAction
="ThrowNewException" name="Exception">

            
<exceptionHandlers>

              
<add exceptionMessage="This is a test!" replaceExceptionType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionHandlingException, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                  type
="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ReplaceHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                  name
="Replace Handler" />

            
</exceptionHandlers>

          
</add>

        
</exceptionTypes>

      
</add>

    
</exceptionPolicies>

  
</exceptionHandling>

</configuration>

这种解决方案其实也是存在了很多的问题:首先是把配置文件名硬编码到了程序了;第二,对于配置文件只能先在App.config中做完配置后再手动分割到不同的文件中。

四.使用.NETconfigSource特性

.NET Framework2.0System.Configuration允许对于应用程序配置文件中的每个配置区放到一个外部配置文件中,再用configSource的特性来指定各个配置区的外部文件。但是这种解决方案仍然是不能直接使用EntLibConfig.exe来配置,因为配置工具不能识别configSource。所以一个好的办法就是先使用EntLibConfig.exeApp.config中配置,最后再手动修改。这种方式对于使用Enterprise Library来说代码不变,如我们刚开始的例子所示,应用程序配置文件如下:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

  
<configSections>

      
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

      
<section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />

  
</configSections>

  
<exceptionHandling configSource="exceptions.config" />

  
<connectionStrings configSource="data.config" />

</configuration>

data.config

<?xml version="1.0" encoding="utf-8"?>

<dataConfiguration defaultDatabase="EntLibInstance" />

<connectionStrings>

  
<add name="EntLibInstance" connectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Database=Northwind;"

      providerName
="System.Data.SqlClient" />

</connectionStrings>

exceptions.config

<?xml version="1.0" encoding="utf-8"?>

<exceptionHandling>

  
<exceptionPolicies>

    
<add name="Event Policy">

      
<exceptionTypes>

        
<add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

            postHandlingAction
="ThrowNewException" name="Exception">

          
<exceptionHandlers>

            
<add exceptionMessage="This is a test!" replaceExceptionType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ExceptionHandlingException, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                type
="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.ReplaceHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"

                name
="Replace Handler" />

          
</exceptionHandlers>

        
</add>

      
</exceptionTypes>

    
</add>

  
</exceptionPolicies>

</exceptionHandling>


以上几种方案仅仅是给你一个参考,你可以在开发中根据实际情况选用其中的一种或者使用默认的方式。

[注:本系列很多可能来自于国外一些技术Blog,我将重新加以整理] 

参考资料

  External configuration files in Enterprise Library for .NET Framework 2.0

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2006-07-03 17:54 TerryLee 阅读(10168) 评论(32)  编辑 收藏 网摘 所属分类: [10]  模式与实践[01]  .NET大本营

  回复  引用  查看    
#1楼2006-07-04 09:13 | DotNet菜园      
关注.

  回复  引用  查看    
#2楼[楼主]2006-07-04 09:26 | TerryLee      
@DotNet菜园

谢谢:)

  回复  引用    
#3楼2006-07-12 13:04 | king1[未注册用户]
请问,Data Access Application Block 配置,我要打开多个sqlserver数据库要怎么配置,可不可以在一个配置文件里配置多个数据库的连接。谢谢!
  回复  引用  查看    
#4楼[楼主]2006-07-12 13:42 | TerryLee      
@king1

配置多个数据库连接是完全可以的,用配置工具配置多个数据库连接实例,

即在上面第三副图中有多个EntLibInstance

  回复  引用    
#5楼2006-07-12 14:47 | king1[未注册用户]
@TerryLee
谢谢

是不是在connection String 节点下面添加 connection String
是不是说一个程序集合(.exe)只能有一个数据库实例?
还有我参考你的加密连接字符串的文章,加密后就不能用了文件内容如下:

?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">">http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">">http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">">http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">">http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>elEBjc4ttxDScgJI9M4/wlz9CndNTiqGM4Mfiq+j4IHO3CEPY4x5vXUCjDMnax9eW4VxkVxutinWWGhUh5hp92ZxPZBRkHzoBGAbartUiARJD4CAIZdpiGqL1ogXKxDCTW7I0BV4iMpdYGWsA9CNZl7W7zuH0sGKBKLVasnp4bE=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>AoZXBNEjylz4YMTZ3bCDEoi36jfZCXfoG51nsOAVCvY=</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
</configuration>

  回复  引用  查看    
#6楼[楼主]2006-07-12 15:16 | TerryLee      
@king1

可以有多个数据库实例,有一个是默认的

默认数据库实例:
Database db = DatabaseFactory.CreateDatabase();

指定数据库实例:
Database db = DatabaseFactory.CreateDatabase("EntLibInstance");

加密后的字符串ConfigurationManager会自己解密的


  回复  引用    
#7楼2006-07-12 16:05 | king1[未注册用户]
@TerryLee
非常感谢,配置我明白了。
加密好象不行,不过我准备另外想方法来解决。

  回复  引用  查看    
#8楼[楼主]2006-07-12 16:31 | TerryLee      
@king1

不用客气

加密是可以的,在这之前我做过测试。

  回复  引用    
#9楼2006-07-12 16:55 | king1[未注册用户]
我刚才重新试了一下可以了,因为我用的配置文件是外部的配置文件(是通过 FileConfigurationSource获取配置文件的)

在加密的时候我是加了两句就可以了用到文件映射,代码如下:

Shared Sub EncryptConfiguration()
Dim provider As String = "RsaProtectedConfigurationProvider"
Dim config As Configuration = Nothing
'config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
Dim FileMap As New ExeConfigurationFileMap()
FileMap.ExeConfigFilename = "MsErp.config"
config = ConfigurationManager.OpenMappedExeConfiguration(aa, ConfigurationUserLevel.None)
Dim section As ConfigurationSection = config.ConnectionStrings
If (section.SectionInformation.IsProtected = False) AndAlso (section.ElementInformation.IsLocked = False) Then
section.SectionInformation.ProtectSection(provider)
section.SectionInformation.ForceSave = True
config.Save(ConfigurationSaveMode.Modified)
End If
End Sub

谢谢!

  回复  引用    
#10楼2006-08-20 16:04 | 忠实者[未注册用户]
上面说了那么多
大致我也知道,不过就是不知道在代码中怎么应用它
能说说这方面的吗?

  回复  引用  查看    
#11楼[楼主]2006-08-23 14:15 | TerryLee      
@忠实者
在代码中怎么应用它?
不太明白你的意思,当有这方面的需要时,就可以使用了:-)

  回复  引用    
#12楼2006-09-07 10:29 | IUnknow[未注册用户]
请问在“不使用外部配置文件”时,怎样在程序中写配置文件?
Quick Start示例中的代码:
Configuration config = ConfigurationManager.OpenExeConfigurationConfigurationUserLevel.None);
config.Sections.Remove("EditorSettings");
config.Sections.Add("EditorSettings", configData);
config.Save();

怎么调用Save()后,app.config中的配置信息都不会该变?

  回复  引用  查看    
#13楼[楼主]2006-09-07 17:29 | TerryLee      
@IUnknow
你说的这是Enterprise Library 1.1吧?

  回复  引用    
#14楼2006-09-24 10:32 | 史云飞[未注册用户]
我有疑问,我要说:

我做c/s程序时用企业类库的[数据访问应用程序块],我不可能每个客户端都放一个数据连接字符串的配置文件吧,因为如果数据库的用户名和密码变了,不可能客户端的配置连接字符串每个都要修改。有没有什么办法?
期待中....

  回复  引用    
#15楼2006-11-28 13:41 | aa[匿名][未注册用户]
配置文件混乱,结构不清是2.0的主要毛病.
1.1配置文件结构清晰,仅仅是不能选择配置源而已,我觉得1.1肯定是最符合实际应用的.
真是的2.0怎么后退了这么多呢.很让人失望.

  回复  引用    
#16楼2006-11-28 13:44 | aa[匿名][未注册用户]
2.0感觉是在玩技术,
1.1确能在实际编程中发挥作用

  回复  引用  查看    
#17楼[楼主]2006-11-28 13:52 | TerryLee      
@aa[匿名]
我不敢苟同,2.0无论从效率还是和.NET Framework的结合等各方面来讲,都比1.1有了很大的提高,怎么能是玩技术呢?

  回复  引用    
#18楼2006-12-20 16:58 | 学习的人[未注册用户]
@TerryLee
我想问一个问题,Enterprise Library 2.0访问几个数据库。
把这几个数据库的信息都放在App.config中。
在程序运行时,可能需要修改数据库的连接。
比如:又增加了个数据库的连接。
增加后就对这个数据库进行访问,程序报错。
说配置文件中没有这个数据库的连接信息。
我已经手动的写进去了。
为什么?


  回复  引用  查看    
#19楼[楼主]2006-12-23 16:34 | TerryLee      
@学习的人
“在程序运行时,可能需要修改数据库的连接。
比如:又增加了个数据库的连接。”

增加的数据库连接是通过程序呢,还是你手工修改的呢?

  回复  引用    
#20楼2006-12-27 20:01 | 学习的人[未注册用户]
能用程序写的配置文件,因为配置文件是XML文档。是通过操作XML实现的。

  回复  引用    
#21楼2007-03-08 20:06 | 啤酒花[未注册用户]
APP.config
<configuration>
<configSections>
<section name="FORMACTION" type="JOYPLUSEmployeeManage.Configuration.FormsAction,Configuration, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" />
<section name="MENUITEM" type="JOYPLUSEmployeeManage.Configuration.MenuitemConfig,Configuration, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" />
<section name="SQLSCRIPT" type="Configuration.SqlConfig,Configuration, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" />
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<dataConfiguration configSource="configuration\dataConfiguration.config" />
<FORMACTION PATH ="configuration\FormsAction.config" />
<MENUITEM PATH ="XmlConfig\MenuItem\MenuItem_CH.xml" />
<SQLSCRIPT PATH ="XmlConfig\SqlConfig\SqlConfig.xml" />
</configuration>
dataConfiguration.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<dataConfiguration defaultDatabase="EntLibInstance" />

<connectionStrings>

<add name="EntLibInstance" connectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Database=Northwind;"

providerName="System.Data.SqlClient" />

</connectionStrings>
</configuration>
代码段:
db = DatabaseFactory.CreateDatabase();
错误:
configSource 文件的格式必须为包含节名的元素。 (D:\JOYPLUSEmployeeManage\JOYPLUSEmployeeManage\JOYPLUSEmployeeManage\bin\Debug\configuration\dataConfiguration.config line 2)



  回复  引用    
#22楼2007-03-08 20:10 | 啤酒花[未注册用户]
另外还有问题,如果使用多个ConfigurationSource方式来配置将异常日志写入数据库,这样直接在代码段写死配置文件路径好象有点问题吧。
  回复  引用  查看    
#23楼2007-12-10 17:13 | 油纸伞      
我在使用你的第二种方法时,主要是把Validation分离出去了,为什么App.config中的其它如日志等配置就不好使了呢,出现错误说找不到关于日志的配置。



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 441670




相关文章:

相关链接: