У меня есть приложение, использующее Autofac в настоящий момент. Я сконструировал автозапуск для регистрации из конфигурационного файла после, в который загружены модули. (Для переопределения поведения по умолчанию на основе xml).Конфигурация и свойства конфигурации Autofac Переопределить или предоставить, если нет?
Прямо сейчас у меня есть класс с множеством основных настроек окружающей среды (на самом деле множество общественных авто-свойств). Этот класс пытается угадать конфигурацию по умолчанию, основанную на некоторых настройках, но идея состоит в том, что каждая среда, в которой работает приложение, переопределит эти параметры в конфигурации xml.
Вот моя проблема:
Ранее в развитии этой системы, все было радужно. Теперь, похоже, полностью игнорирует ввод XML-конфигураций. Я не уверен, что изменилось, что заставило это сломаться, поэтому я надеюсь, что кто-то может указать на что-то очевидное, я поступаю неправильно.
Я проверил, что файл конфигурации считывается/анализируется с помощью autofac, просто не применяется.
web.config:
<autofac>
<files>
<file name="Config/Environment.config" section="autofac-common" />
<file name="Config/Environment.config" section="autofac-public" />
</files>
</autofac>
Environment.config:
<configuration>
<configSections>
<section name="autofac-common" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/>
<section name="autofac-public" type="Autofac.Configuration.SectionHandler, Autofac.Configuration"/>
</configSections>
<!-- Common -->
<autofac-common>
<components>
<component type="MyApp.Web.Configuration.ServerConfiguration, MyApp.Web"
service="MyApp.Web.Configuration.IServerConfiguration, MyApp.Web">
<properties>
<property name="Host" value="beta.mysite.com" />
<property name="MediaHost" value="beta.media.mysite.com" />
</properties>
</component>
</components>
</autofac-common>
<!-- Web Site -->
<autofac-public>
<modules>
<module type="MyApp.Configuration.CachingModule, MyApp">
<properties>
<property name="Disable" value="true" />
</properties>
</module>
</modules>
</autofac-public>
</configuration>
Контейнер строительный кодекс
var builder = new ContainerBuilder();
// Register Identifier so it's available to modules
builder.RegisterType<ServerIdentifier>()
.As<IServerIdentifier>()
.SingleInstance();
var container = builder.Build();
builder = new ContainerBuilder();
builder.RegisterModule(new CachingModule() { Disable = true });
builder.RegisterModule(new LoggerModule());
builder.RegisterModule(new InventoryModule());
builder.RegisterModule(new CatalogModule());
builder.RegisterModule(new WebModule(container));
// Override with settings from XML
builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
builder.Update(container);
Autofac Version is 2.3.2.632
Для .NET 3.5
Не могли бы вы показать нам контейнерный код? Кроме того, какую версию Autofac вы используете? – 2010-12-08 11:42:24