J'ai une application utilisant Autofac pour le moment. J'ai structuré mon autofac pour enregistrer à partir du fichier de configuration après les modules sont chargés. (Pour un remplacement basé sur XML du comportement par défaut). À l'heure actuelle, j'ai une classe avec un tas de paramètres environnementaux de base (un grand nombre de propriétés auto-publiques). Cette classe essaie de deviner la configuration par défaut en fonction de certains paramètres, mais l'idée est que chaque environnement dans lequel l'application s'exécute remplacerait ces paramètres dans la configuration xml.Configuration et propriétés XML Autofac Remplacer ou Fournir si non présent?
Voici mon problème:
Plus tôt dans le développement de ce système, les choses étaient Peachy. Maintenant il semble ignorer complètement l'entrée des XML Configs. Je ne suis pas sûr de ce qui a changé ce qui a causé que cela se brise, donc j'espère que quelqu'un peut signaler quelque chose d'évident que je fais mal.
J'ai vérifié que le fichier de configuration est lu/analysé par autofac, mais pas appliqué.
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>
Building Container Code de
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);
Version Autofac est 2.3.2.632
Pour .NET 3.5
Pourriez-vous nous montrer le code de construction de conteneurs? Aussi, quelle version d'Autofac utilisez-vous? –
@Peter Lillevold: Mise à jour avec le code du bâtiment du conteneur. Aussi la version autofac incluse. Je suppose qu'avec les changements fréquents d'autofac et les changements constants de * rupture * il est plus important que les autres bibliothèques de connaître la version :) – Aren
De quoi parlez-vous? –