2012-02-15 171 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。