J'ai une application qui lance une exception AmbiguousMatchException lorsque j'appelle AppDomain.CreateInstanceAndUnwrap pour instancier un type dans un autre AppDomain. Cela se passe sur l'ordinateur d'un client auquel je n'ai pas directement accès. Je pense que le problème est qu'il y a deux copies du même assemblage chargé. Est-il possible de déterminer si c'est le cas et d'où les deux assemblages sont chargés? L'activation du journal de fusion fournira-t-elle des informations supplémentaires?Débogage d'une exception AmbiguousMatchException levée lors de l'appel de AppDomain.CreateInstanceAndUnwrap dans .NET
1
A
Répondre
0
Le journal de fusion peut aider, mais une autre option pourrait être pour accrocher l'événement AssemblyLoad
:
AppDomain.CurrentDomain.AssemblyLoad += (s, a) =>
{
Console.WriteLine(a.LoadedAssembly.FullName);
Console.WriteLine(a.LoadedAssembly.CodeBase);
};
Il y a deux causes principales de cette erreur:
- dénomination pure coïncidence - à savoir Foo.dll et Bar.dll ont tous deux un
Some.Namespace.Type
type - différentes versions (principalement GAC) référencées par différents composants - c'est-à-dire votre DAL charge v2 de certains DLL, et votre UI/code utilitaire charges v4 de la même dll
Bien sûr, une autre option est que vos AppDomain
s ont infecté chaque-autre (il est très (trop?) facile à sucer accidentellement une référence sur une limite AppDomain
en l'exposant sur l'API de l'objet MarshalByRef
).
Questions connexes
- 1. Exception de débogage de messagerie
- 2. Test d'une exception est levée lors de l'utilisation de get avec Ruby on Rails
- 3. Pourquoi une exception est-elle levée depuis Spring.NET lors de l'appel de ContextRegistry.GetContext()?
- 4. Exception levée lorsque l'ordre de déclaration des ressources a changé
- 5. programme d'interruption dans le débogueur lorsque C++ exception est levée
- 6. Backgroundworker: exception lors de l'annulation
- 7. Débogage CLR proc exception
- 8. Débogage de la production .NET
- 9. Journal de débogage .NET
- 10. spring mvc: détecter si une exception a été levée lors du chargement du contexte
- 11. Unhandled GeneratorExitException levée lors de l'importation de la bibliothèque dans IronPython incorporé
- 12. Exception lors de l'utilisation strncpy
- 13. Exception levée lors de la tentative d'accès à un service de données ADO.NET Construit avec le framework Entity
- 14. Java - Une exception doit être levée, mais comment?
- 15. exception Boost lors de l'exécution
- 16. Le message de réponse WCF prend 40 minutes et aucune exception de délai d'attente n'est levée
- 17. Numéro de ligne pour Exception levée dans le code DotNET compilé à l'exécution
- 18. exception Odd jeté dans .NET
- 19. Selenium - Exception lors de l'exécution de selenium.stop()
- 20. exception HRESULT 0x80131047 dans Microsoft Visual Basic 2008 express lors du débogage
- 21. Sans utiliser la récursivité, comment une exception de dépassement de pile peut-elle être levée?
- 22. System.Security.Permissions.MediaPermission Exception lors du chargement de l'image dans la DLL
- 23. .net Exception OutOfMemory
- 24. Quelle exception doit être générée lors de la validation des résultats des rappels externes dans .NET?
- 25. Comment déboguer le code externe après exception dans .NET (vs2008)
- 26. Quelle est la différence entre démarrer le débogage et démarrer sans débogage dans l'application Silverlight?
- 27. Débogage à distance .net
- 28. exception FileNotFound lors de l'utilisation XmlSerializer
- 29. Exception lors de l'extension d'un composant flexible
- 30. Exception lors de la destruction TReader