摘要:我們知道在Enterprise Library1.1中對於每一個應用程序塊都有一個對應的配置文件,而在Enterprise Library2.0中卻把所有的配置信息都放在了應用程序配置文件(App.config或Web.config)中,在2.0下,我們如何使用外部配置文件?如何為每個應用程序塊創建對應的配置文件?
主要內容
1.不使用外部配置文件
2.使用不同的ConfigurationSource
3.使用多個ConfigurationSource
4.使用.NET的configSource特性
一.不使用外部配置文件
我們先來看一個簡單的使用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"?>
我們知道在EL1.1下,對於不同的應用程序塊是放在了不同的配置文件中,而到了2.0中可以看到,所有的配置信息都放在了應用程序配置文件中(App.config或者Web.config)。但是很多時候配置文件中有很多的信息也是我們自己手動添加的,如果這些混合在一起會顯得非常混亂,所以我們並不想把所有的配置信息都放在應用程序配置文件中,該如何實現呢?Tom Hollander給了我們幾種可行的方案。
<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>