web-dev-qa-db-fra.com

Comment puis-je activer la journalisation de la liaison avec Assembly?

J'obtiens "Impossible de charger le fichier ou l'assembly 'Bla' ou l'une de ses dépendances. Une tentative de chargement d'un programme avec un format incorrect a été effectuée."

Une partie de l'information détaillée dit:

"WRN: la journalisation de la liaison avec Assembly est désactivée. Pour activer la journalisation des échecs de liaison avec Assembly, définissez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) sur 1. Remarque: Une pénalité en termes de performances est associée. avec la journalisation des échecs de liaison à l’assemblage. Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog]. "

Alors, pensant que cela peut me donner une idée de la raison pour laquelle je reçois l'erreur ci-dessus (peut-être que le prochain YSOD contiendrait des informations plus explicites sur la raison exacte de son échec), je suis allé à cet emplacement dans le registre, mais cette clé n'existe pas. que je peux voir. Ce qu'il a c'est:

\Fusion 
    (Default)   value not set
    \GACChangeNotification
    \NativeImagesIndex
    \PublisherPolicy

Qu'est-ce que je rate?

46
B. Clay Shannon

Un bon endroit pour commencer votre enquête sur toute liaison ayant échoué est d'utiliser l'utilitaire "fuslogvw.exe". Cela peut vous donner les informations dont vous avez besoin concernant l’échec de la liaison afin que vous n’ayez pas à vous soucier des valeurs du registre pour activer la journalisation de la liaison.

page Fuslogvw MSDN

Cet utilitaire doit figurer dans votre dossier Microsoft SDK, ce qui correspond à votre système d'exploitation: "C:\Program Files (x86)\Microsoft SDK\Windows\v {SDK version} A\Bin\FUSLOGVW.exe "

1) Exécutez cet utilitaire (il possède une interface graphique) et définissez les paramètres sur "Journal des échecs de liaison sur le disque".

2) Cliquez sur "Supprimer tout" pour effacer la liste des échecs de liaison précédents.

3) reproduire l'échec de la liaison dans votre application

4) Dans l'utilitaire, cliquez sur Actualiser. Vous devriez alors voir l'échec de liaison enregistré dans la liste.

5) Vous pouvez afficher des informations sur l'échec de la liaison en les sélectionnant dans la liste et en cliquant sur "Afficher le journal".

La première chose que je recherche est le chemin dans lequel l'application recherche l'Assemblée. Vous devez également vous assurer que le numéro de version de l’Assemblée en question correspond à vos attentes.

55
Scampbell

Créez simplement un nouveau DWORD (32) sous la clé Fusion. Attribuez à DWORD le nom EnableLog et définissez-le sur la valeur 1. Redémarrez ensuite IIS, actualisez la page générant les erreurs et les journaux de liaison à l’Assembly apparaissent dans le message d’erreur.

20
pierce.jason
  1. Créer un nouveau pool d'applications

  2. Accédez aux paramètres avancés de ce pool d'applications.

  3. Définissez l'option Activer l'application 32 bits sur True

  4. Indiquez à votre application Web d'utiliser ce nouveau pool

Screenshot (IIS-ApplicationPool)

5
Ajay Shankar

La réponse de per pierce.jason ci-dessus, j'ai eu de la chance avec:

Créez simplement un nouveau DWORD (32) sous la clé Fusion. Nommez le DWORD en LogFailures et attribuez-lui la valeur 1. Redémarrez ensuite IIS, actualisez la page générant des erreurs et les journaux de liaison de l'assembly s'affichent dans le message d'erreur.

2
Robert_T_Taylor

Au lieu de créer un nouveau pool d'applications, vous pouvez accéder à votre compte existant pool d'applications -> clic droit, paramètre avancé> Activer l'application 32 bits ----- Définir sur - TRUE

1
Debendra Dash

Quand j'ai eu le même problème, j'ai résolu le problème en supprimant le key.snk Existant dans ce projet et en ajoutant une nouvelle clé.

1
Madhu Mca

Si vous exécutez parfois des versions différentes de votre application, assurez-vous de supprimer "Bla" du répertoire bin de l'application si la version en cours d'exécution n'en a pas besoin.

1
Myles Baker

Pour moi, le fichier 'Bla' était la DLL System.Net.http qui manquait dans mon dossier BIN. Je viens de l'ajouter et cela a bien fonctionné. N'a changé aucune clé de registre ou quoi que ce soit de ce genre.

1
alwaysabeginner

Cette erreur vient pour moi dans l'application Windows tout en appelant le serveur dll du client. Après le redémarrage du système cela fonctionne bien

0
Sivashankar