2012-02-15 124 views
4

我想團結在我的應用程序整合,我想它使用外部配置文件ASP.NET - 團結 - 閱讀從外部配置文件配置部件

的統一初始化代碼

var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = "unity.config" }; 
System.Configuration.Configuration configuration = 
ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 

// *** problem starts here *** 
var unitySection = (UnityConfigurationSection)configuration.GetSection("unity"); 
var container = new UnityContainer().LoadConfiguration(unitySection); 

此外,我有以下內容

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <alias alias="IEmailConfigurator" type="Server.Common.Interfaces.IEmailConfigurator, Server.Common" /> 
    <alias alias="EmailConfigurator" type="Server.Common.EmailConfigurator, Server.Common" /> 

    <namespace name="Server.Common.Interfaces" /> 
    <namespace name="Server.Common" /> 

    <container> 
    <register type="IEmailConfigurator" mapTo="EmailConfigurator" /> 
    </container> 
</unity> 

的問題是,在這裏我想加載unitySection,GetSection(行)返回團結,名爲「unity.config」外部配置文件 空值。

可能是什麼問題?


EDIT

我加入

<configuration> 
    <configSections> 
     <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> 
     </configSections> 

然而,現在,當我通過代碼跟蹤中,管線

System.Configuration.Configuration configuration = //... 

在初始化的文件路徑屬性是配置變量C:\ Program Files(x86)\ IIS Express \ unity.config ,而不是我自己的unity.config文件

任何想法如何從Web文件夾中引用配置文件?

謝謝。

回答

0

你嘗試到<configuration><configSections>元素添加到您的配置文件?

+0

不確定你的意思...添加什麼「和元素」? – bzamfir 2012-02-16 00:13:19

+1

@bzamfir對不起。忘了逃避xml標籤。 – 2012-02-16 06:34:55

0

我不知道,如果你解決了這個尚未開始。在Visual Studio中,你必須確保「Unity.config」以下文件屬性:

  • 生成操作 - >「內容」
  • 複製到輸出目錄 - >「複製,如果新」或「一直拷貝「

我建議」始終複製「以確保當前的Unity配置在構建之後總是存在。

0

要訪問Web文件夾,請使用HttpServerUtility.MapPath方法。

var mappedConfig = Server.MapPath("~/unity.config"); 

服務器是頁面的一個屬性,或使用HttpContext.Current.Server。