I want to integrate Unity into my application and I want it to use an external configuration file
Unity Initialization Code
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);
In addition, I have an external configuration file for unity named "unity.config" with the following contents
<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>
The problem is that on the line where I want to load singleSection, GetSection () returns null.
What could be the problem?
EDIT
I added
<configuration> <configSections> <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/> </configSections>
However, now when I track the code, in line
System.Configuration.Configuration configuration =
The configuration variable in the initialized FilePath property is C: \ Program Files (x86) \ IIS Express \ unity.config, not my own unity.config file
Any idea how to reference the configuration file from a web folder?
Thanks.