Question

Lorsque le cadre de spring.net démarre une application asp.net fait le composant qui enregistre tous les objets dans le conteneur IoC récursion tous les sous-répertoires référencés dans le web.config?

par exemple.

<spring>
  <context>
    <resource uri="~/bin/ClientService/ClientService.config"/>
    <resource uri="~/MCFModule.config"/>
  </context>
</spring>

Je crois que la réponse à la recherche oui à l'info de débogage (écouteur de la trace) de sortie.

Le problème que je vois est que quand il tente de créer une instance dans le « \ bin \ clientservice » répertoire il échoue avec le message d'erreur même si la dll existe dans le sous-répertoire;

'Impossible de charger le fichier ou l'assembly 'log4net, Version = 1.2.10.0, Culture = neutral, PublicKeyToken = 1b44e1d426115821' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Toute personne a des idées?

Vive

Ollie

Était-ce utile?

La solution

Vous avez également la possibilité de gérer les défaillances de charge programme de montage, en utilisant la AppDomain.AssemblyResolve événement sur la classe AppDomain.

Vous pouvez, par exemple, analyser tous les sous-répertoires à la recherche de l'assemblage que vous aimez.

Autres conseils

Quand Spring.NET tente de résoudre une référence dans son fichier de configuration, il utilisera le même règles comme chargeur d'assemblage .NET. vous pourriez peut-être essayer d'ajouter la référence correcte de l'ensemble de log4net dans votre dossier bin.


EDIT: Si vous voulez Spring.NET pour localiser des ensembles dans des endroits non standard, vous pouvez utiliser le élément pour indiquer l'emplacement:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>

  <spring>
    <context>
      <resource uri="config://spring/objects"/>
    </context>
    <objects xmlns="http://www.springframework.net">
      <object id="someObject" type="log4net.Util.AppenderAttachedImpl, log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" />
    </objects>
  </spring>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="log4net"
                          publicKeyToken="1b44e1d426115821"
                          culture="neutral" />
        <codeBase version="1.2.10.0
                  href="file:///c:/some_special_location/log4net.dll" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

</configuration>

Et vous pouvez alors demander le récipient pour instancier l'objet:

var someObject = ContextRegistry.GetContext().GetObject("someObject");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top