我想在我的应用中集成Unity,我希望它使用外部配置文件
Unity初始化代码是
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.config”,内容如下:
<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()返回null。
可能是什么问题?
修改
我添加了
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
然而,现在当我通过代码追踪时,在行
System.Configuration.Configuration configuration = //...
初始化的配置变量,FilePath属性是C:\ Program Files(x86)\ IIS Express \ unity.config,而不是我自己的unity.config文件
知道如何从web文件夹中引用配置文件吗?
谢谢。
答案 0 :(得分:0)
您是否尝试将<configuration>
和<configSections>
元素添加到配置文件中?
答案 1 :(得分:0)
http://msdn.microsoft.com/en-us/library/ff660935%28v=pandp.20%29.aspx
您的外部配置文件也必须从<configuration>
代码开始,而不是<unity>
代码
答案 2 :(得分:0)
我不知道你是否解决了这个问题。在Visual Studio中,您必须确保“Unity.config”的以下文件属性:
我建议“始终复制”以确保构建后始终存在当前的Unity配置。
答案 3 :(得分:0)
要访问Web文件夹,请使用HttpServerUtility.MapPath方法。
var mappedConfig = Server.MapPath("~/unity.config");
Server是Page的一个属性,或者使用HttpContext.Current.Server。