Configuration ASP.NET-Unity-从外部配置文件读取配置节

Configuration ASP.NET-Unity-从外部配置文件读取配置节,configuration,unity-container,Configuration,Unity Container,我想在我的应用程序中集成Unity,并希望它使用外部配置文件 Unity初始化代码是 var fileMap = new ExeConfigurationFileMap { ExeConfigFilename = "unity.config" }; System.Configuration.Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUser

我想在我的应用程序中集成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的外部配置文件,名为“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>  
初始化文件路径属性中的配置变量是C:\Program Files(x86)\IIS Express\unity.config,而不是我自己的unity.config文件

知道如何从web文件夹引用配置文件吗


多谢各位

是否尝试将
元素添加到配置文件中?


您的外部配置文件也必须从
标记开始,而不是从
标记开始,我不知道您是否解决了这个问题。在Visual Studio中,必须确保“Unity.config”的以下文件属性:

  • 生成操作->“内容”
  • 复制到输出目录->“更新时复制”或“始终复制”

我建议“始终复制”,以确保当前Unity配置在生成后始终存在。

要访问web文件夹,请使用HttpServerUtility.MapPath方法

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

服务器是页面的属性,或者使用HttpContext.Current.Server。

不确定您的意思。。。要添加什么“和元素”?@bzamfir抱歉。忘了转义xml标记。
System.Configuration.Configuration configuration = //...
var mappedConfig = Server.MapPath("~/unity.config");