Gestion des versions de DLL erreur
J'ai un site web que de façon sporadique déclenche le message d'erreur suivant:
Erreur de serveur dans l'Application'/'.
Impossible de charger le fichier ou l'assembly 'ICSharpCode.SharpZipLib, Version=0.85.3.365, Culture=neutral, PublicKeyToken=1b03e6acf1164f73' ou une de ses dépendances. L'assemblée manifeste définition ne correspond pas à la référence d'assembly. (Exception de HRESULT: 0x80131040)
Maintenant, je sais que j'ai une dépendance à cette DLL, mais j'ai la version 0.85.5 sur mon système. J'ai systématiquement supprimés chaque ancienne version de la DLL à partir du serveur, la recompilation de tout et réédité. Mais peu importe ce que je fais, il semble que, après chaque republier, la première ou les deux premières fois que quelqu'un visite le site, ils bénéficient de cette erreur. Puis, après l'actualisation de une ou deux fois, l'erreur disparaît et les fonctions du site que la normale.
Ce qui le rend encore plus bizarre, c'est que si je regarde la ligne de code où l'erreur est levée:
URLRewriter.ProcessRewritingResult(status, excludedEnum, siteName, viewMode, relativePath);
URLRewriter
est une classe à partir d'un 3ème partie package (Kentico CMS - CMS.URLRewritingEngine.dll). J'ai couru Dependency Walker sur cette DLL et n'a trouvé aucune dépendances que ce soit sur ICSharpCode.SharpZipLib.
Toutes les idées de comment résoudre ce problème?
EDIT: À @JeremyThompson de la suggestion, j'ai couru le Moniteur de Processus de capture de l'erreur. Voici une capture d'écran apparaît, avec les pièces souligné (et un nom de dossier occulté pour des raisons de confidentialité). Vous pouvez l'afficher en plein taille par un clic droit sur elle, etc...
EDIT: Voici une charge de trace de l'erreur. Cela vous aide?
=== Pré-lier les informations d'état ===
JOURNAL: Utilisateur = MON-SERVEUR-12\Administrateur
JOURNAL: DisplayName = ICSharpCode.SharpZipLib, Version=0.85.3.365, Culture=neutral, PublicKeyToken=1b03e6acf1164f73
(Complètement spécifié)JOURNAL: Appbase = file:///C:/inetpub/wwwroot/Monsite/
JOURNAL: Initiale PrivatePath = C:\inetpub\wwwroot\MySite\bin
L'appel de l'assemblée : CMS.WebAnalytics, Version=6.0.4377.2467, Culture=neutral, PublicKeyToken=834b12a258f213f9.
===
JOURNAL: Cette liaison commence en charge par défaut le contexte.
JOURNAL: l'Utilisation de fichier de configuration d'application: C:\inetpub\wwwroot\MySite\web.config
JOURNAL: l'Utilisation de fichier de configuration d'hôte: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
JOURNAL: l'Utilisation de la machine fichier de configuration de C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
JOURNAL: Post-politique de référence: ICSharpCode.SharpZipLib, Version=0.85.3.365, Culture=neutral, PublicKeyToken=1b03e6acf1164f73
JOURNAL: Tentative de téléchargement de la nouvelle URL de type file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporaire ASP.NET Files/root/9760eb69/275bb3db/ICSharpCode.SharpZipLib.DLL.
JOURNAL: Tentative de téléchargement de la nouvelle URL de type file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporaire ASP.NET Files/root/9760eb69/275bb3db/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib.DLL.
JOURNAL: Tentative de téléchargement de la nouvelle URL file:///C:/inetpub/wwwroot/MySite/bin/ICSharpCode.SharpZipLib.DLL.
JOURNAL: Tentative de téléchargement de la nouvelle URL file:///C:/inetpub/wwwroot/MySite/bin/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib.DLL.
JOURNAL: Tentative de téléchargement de la nouvelle URL de type file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporaire ASP.NET Files/root/9760eb69/275bb3db/ICSharpCode.SharpZipLib.EXE.
JOURNAL: Tentative de téléchargement de la nouvelle URL de type file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporaire ASP.NET Files/root/9760eb69/275bb3db/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib.EXE.
JOURNAL: Tentative de téléchargement de la nouvelle URL file:///C:/inetpub/wwwroot/MySite/bin/ICSharpCode.SharpZipLib.EXE.
JOURNAL: Tentative de téléchargement de la nouvelle URL file:///C:/inetpub/wwwroot/MySite/bin/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib.EXE.
OriginalL'auteur Shaul Behr | 2012-07-15
Vous devez vous connecter pour publier un commentaire.
Sonne comme de la "dépendance" attend la ÂGÉES version de la DLL. Pourquoi ne pas REMPLACER toutes les copies de la plus RÉCENT version (0.85.5) sur votre système, avec la ÂGÉES version (0.85.3.365)? (Assurez-vous de vérifier à la fois le " bin " du dossier de votre application web et le 'GAC': c:\windows\assemblies)
Si vous avez besoin, vous pouvez télécharger l'ancienne version ici: http://sourceforge.net/projects/sharpdevelop/files/SharpZipLib/0.85.3/
REMARQUE:
les fichiers. E. g.:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET
Fichiers
les références de l'ancienne version.
Acclamations
Pete
OriginalL'auteur Peter
Vous mentionner que la première ou les deux premières fois qu'un utilisateur visite le site, vous obtenez le message d'erreur.
À résoudre le problème, je vous suggère d'exécuter Le Moniteur De Processus et de voir où ses à la recherche pour trouver et charger l'assembly.
-iisreset
-démarrer le Moniteur de Processus sur le serveur
-affichage d'un couple de pages et de reproduire le problème aussi rapidement que possible
-arrêter le ProcessMonitor trace
-la recherche dans le processus de trace du moniteur pour
ICSharpCode.SharpZipLib
Si cela échoue, voir ce qui en était la cause:
-enregistrer le ProcessMonitor résultats au format CSV
-ouvrir le fichier CSV dans Excel
-filtre toutes les colonnes
-le choix de la liste déroulante de la colonne avec le refus d'Accès ou ...
Cela devrait vous dire quel est le problème avec l'erreur
Could not load file or assembly
En fait, il semble être de tenter (et l'échec) de "Créer un Fichier" dans le GAC, puis dans le .NET dossier des fichiers temporaires, avant de réussir à faire une "créer un fichier" dans le dossier bin de mon site web. Pourquoi "créer un fichier", plutôt que de "lire le fichier"?
OriginalL'auteur Jeremy Thompson
Il s'avère donc que Kentico a sa dépendance à l'égard
ICSharpCode.SharpZipZip.dll
- et c'est en attendant de trouver l'ancienne version. J'ai trouvé une solution similaire ici. En insérant le bloc suivant dans mon web.fichier de config, il semble que j'ai enfin banni cette erreur!Ce que je ne comprends toujours pas, pourquoi ne pas la Dépendance Tracker montrer cette dépendance?
EDIT: Oh, cela ne résout pas, après tout. Il semble se produire moins souvent maintenant, mais après le redémarrage IIS aujourd'hui, l'un de nos testeurs ai le message d'erreur vieille de nouveau! 🙁
<bindingRedirect oldVersion="0.0.0.0-0.85.5.452" newVersion="0.85.5.452"/>
OriginalL'auteur Shaul Behr
Je pense que vous étiez sur la bonne voie avec la liaison de redirection. Toutefois, permettez-moi de suggérer qu'au lieu de lier votre application à l'encontre de l'ancienne version, vous tentez de lier la dépendants de l'assemblée à l'encontre de la version la plus récente.
Généralement, forçant la version la plus ancienne est le pire des choix, parce qu'il pourrait résoudre le depdenent de l'assemblée, vous pouvez injecter des erreurs de compatibilité dans le code qui dépend de la version la plus récente.
OriginalL'auteur Brandon Langley
Essayez d'attacher à AppDomain.CurrentDomain.AssemblyResolve, de sorte que vous pouvez voir quand/quoi assemblée des charges et de définir explicitement la charge de l'emplacement.
msdn.microsoft.com/en-us/library/...
Ou utiliser de l'Assemblée de Liaison de la Visionneuse de Journaux (Fuslogvw.exe pour voir comment les assemblées sont sondé msdn.microsoft.com/en-us/library/e74a18c4(v=vs. 71).aspx ---- et voir ---- stackoverflow.com/questions/255669/...
Ce post n'est pas une réelle tentative de répondre à la question. Veuillez noter Débordement de Pile ne fonctionne pas comme un forum de discussion, c'est un Q&Un site, où chaque poste est une question ou une réponse à une question. Les postes peuvent également avoir commentaires - des petites phrases comme celle - ci- qui peut être utilisé à la critique ou à la demande d'éclaircissements de l'auteur. Ce sera soit un commentaire ou un nouvelle question.
OriginalL'auteur user626528
vous pouvez utiliser la Fuslogvw.exe app que l'enregistrement de l'assemblées de chargement et de fournir beaucoup de détails sur les erreurs de chargement.
Lire la suite ici: http://msdn.microsoft.com/en-us/library/e74a18c4.aspx
OriginalL'auteur Tamir
Sont les Kentico CMS et votre Application définie dans le même Pool d'Applications? Essayez de lancer votre Application dans son propre Pool d'Applications.
Ce qui pourrait se passer, c'est quand un processus de travail est recyclé, parfois, votre application est la première à être ajouté, et parfois la Kentico CMS est le premier à être ajouté, et cela change la façon dont le ICSharpCode.SharpZipLib est résolu.
Lorsque vous ne l'rafraîchissant une fois ou deux fois par hasard, votre application est chargé en premier, ce qui signifie qu'il fonctionne.
Qu'est-ce que le Pool d'Application dans IIS et Asp.Net?
Mise à JOUR: votre demande Est un Site Web (compilé lors du premier accès), ou de Projet Web (pré-compilés dans Visual Studio). Si c'est un Site Web, alors pourriez-vous convertir un Projet Web et d'essayer ?
OriginalL'auteur Colin Smith