2009-09-21 5 views
2

J'ai un service Web qui utilise le framework d'entité. Lors de la libération dans un environnement de test, l'erreur suivante s'affiche:Entity Framework LoaderExceptions Impossible de charger un ou plusieurs des types demandés

"Impossible de charger un ou plusieurs types demandés." - Trace de la pile ci-dessous ...

La boîte de test a .NET 3.5 SP 1 installé, et j'ai lu un post précédent ici:

Error message 'Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.'

Cependant, la réponse ne résout pas dans mon cas . J'ai copié et collé la copie de travail de ma machine de développement sur la boîte de test pour m'assurer qu'il n'y a pas de problème avec les DLL de débogage (comme le suggère la réponse), mais pas de chance.

Est-ce un problème connu? J'ai passé une matinée entière à essayer de déboguer ça !! Si quelqu'un connaît une solution, s'il vous plaît faites le moi savoir!

Retrieve the LoaderExceptions property for more information. at System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark) 
    at System.Reflection.Assembly.GetTypes() 
    at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly(LoadingContext context) 
    at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache(LoadingContext context) 
    at System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache(Assembly assembly, Boolean loadReferencedAssemblies, Dictionary`2 knownAssemblies, Dictionary`2& typesInLoading, List`1& errors) 
    at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies) 
    at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyForType(Type type) 
    at System.Data.Metadata.Edm.MetadataWorkspace.LoadAssemblyForType(Type type, Assembly callingAssembly) 
    at System.Data.Objects.ObjectContext.CreateQuery[T](String queryString, ObjectParameter[] parameters) 
    at Company.Domain.ICommuicationsEntities.CreateQuery[T](String queryString, ObjectParameter[] parameters) 
    at Comany.EntityFrameworkRepository`1.GetQuery() 
    at Comany.Repositories.EntityFrameworkRepository`1.GetFiltered(Expression`1 filter, IncludeBuilder`1 includeBuilder) 
    at Comany.Repositories.EntityFrameworkRepository`1.GetFiltered(Expression`1 filter) 
+0

"Récupérer la propriété LoaderExceptions pour plus d'informations." OK, vous avez fait cela, et ça dit ...? –

+0

Ahh .. "OK, vous avez fait cela, et il dit" Je n'ai pas fait cela! Comment puis-je récupérer les LoaderExceptions ou consigner ce qu'elles sont? –

+0

C'est une propriété de l'exception, que vous pouvez inspecter dans le débogueur: http://msdn.microsoft.com/fr-fr/library/system.reflection.reflectiontypeloadexception.loaderexceptions%28VS.80%29.aspx –

Répondre

2

Comme la première ligne de la pile dit:

Retrieve the LoaderExceptions property for more information.

Vous pouvez trouver en examinant l'exception dans le débogueur.

+1

Comment attraper et afficher ReflectionTypeLoadException, voir la réponse http://stackoverflow.com/a/8824250/52277 –

1

La première ligne de la trace de la pile "Récupérer la propriété LoaderExceptions pour plus d'informations" est définitivement la clé de cette opération. Vous devrez attraper ReflectionTypeLoadException ou diffuser votre exception générale.

catch (System.Reflection.ReflectionTypeLoadException ex) { 
    ex.LoaderExceptions; 
} catch (Exception ex) { 
    if (ex is System.Reflection.ReflectionTypeLoadException) 
     ((System.Reflection.ReflectionTypeLoadException)ex).LoaderExceptions; 
} 

Vous pouvez ensuite vérifier la propriété LoaderExceptions pour connaître les références DLL manquantes.

0

System.IO.FileNotFoundException: Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. File name: 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.

Remarque: Une pénalité de performance est associée à la journalisation des échecs de liaison d'assembly. Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM\Software\Microsoft\Fusion!EnableLog].

Questions connexes