2017-02-15 2 views
1

J'ai redéployé un rôle de travail Azure opérationnel avec quelques modifications qui impliquent le référencement d'un nouveau projet de bibliothèque de classes que j'ai configuré et qui ont commencé à voir le rôle de travail redémarrer/recycler sans cesse.Lancement du rôle de travail Azure System.IO.FileNotFoundException

Les journaux d'application de l'Observateur d'événements fournissent très peu d'aide car l'erreur que je reçois est très générique.

Source: .NET Runtime

Application: WaWorkerHost.exe Framework version: v4.0.30319 Description: Le processus a pris fin en raison d'une exception non gérée. Exception Info: System.IO.FileNotFoundException Stack: à System.ModuleHandle.ResolveType (System.Reflection.RuntimeModule, Int32, IntPtr *, Int32, IntPtr *, Int32, System.Runtime.CompilerServices.ObjectHandleOnStack) au système. ModuleHandle.ResolveType (System.Reflection.RuntimeModule, Int32, IntPtr *, Int32, IntPtr *, Int32, System.Runtime.CompilerServices.ObjectHandleOnStack) à System.ModuleHandle.ResolveTypeHandleInternal (System.Reflection.RuntimeModule, Int32, System.RuntimeTypeHandle [ ], System.RuntimeTypeHandle []) à System.ModuleHandle.ResolveTypeHandle (Int32, System.RuntimeTypeHandle [], System.RuntimeTypeHandle []) à System.Reflection.RuntimeModule.ResolveType (Int32, System.Type [], système. Type []) à System.Reflection.CustomAtt ribute.FilterCustomAttributeRecord (System.Reflection.CustomAttributeRecord, System.Reflection.MetadataImport, System.Reflection.Assembly ByRef, System.Reflection.RuntimeModule, System.Reflection.MetadataToken, System.RuntimeType, Booléen, System.Object [], System.Collections .IList, System.RuntimeType ByRef, System.IRuntimeMethodInfo ByRef, Boolean ByRef, Boolean ByRef) à System.Reflection.CustomAttribute.GetCustomAttributes (System.Reflection.RuntimeModule, Int32, Int32, System.RuntimeType, Boolean, System.Collections.IList , Boolean) à System.Reflection.CustomAttribute.GetCustomAttributes (System.Reflection.RuntimeAssembly, System.RuntimeType) à Microsoft.WindowsAzure.Hosts.Worker.Loader.CreateConsoleRole (Microsoft.WindowsAzure.Hosts.Worker.Parameters) chez Microsoft .WindowsAzure.Hosts.Worker.Loader.Main (System.String [])

Source: Erreur d'application

Défaillant nom de l'application: WaWorkerHost.exe, Version: 2.7.1198.768, horodatage: 0x57159090 nom du module Défaillant: KERNELBASE.dll, Version: 6.3.9600.18340, horodatage : 0x57366075 Code Exception: 0xe0434352 défaut offset: 0x0000000000008a5c processus Faulting id: 0xf20 Application défaillante heure de début: 0x01d287c5480b416f chemin d'application Faulting: E: \ base \ x64 \ WaWorkerHost.exe chemin de module défaillant: D: \ Windows \ system32 \ KERNELBASE.d ll Rapport Id: 85f9c3f7-f3b8-11e6-80c1-0004ff9da18e package complet Faulting nom: demande paquet relatif Faulting ID:

J'ai cherché pour cela, mais ne sont pas venus à travers toute personne qui reçoit une erreur message aussi générique que celui-ci.

Mon propre enregistrement ne fournit pas non plus beaucoup d'informations. Tout ce que je sais, c'est que le WorkerRole ne frappe pas la méthode OnStart.

Y a-t-il d'autres journaux qui pourraient aider à affiner le problème?

Merci d'avance.

Répondre

1

Compris ... mais pas de la manière la plus gracieuse.

Je suis allé de l'avant et mis à jour toutes les DLL de Nuget pour les projets de rôle de travail et de bibliothèque de classes. Quelque chose là-dedans résolu ce problème (je sais, mauvais?) Mais je suis confronté à un autre:

Application: WaWorkerHost.exe Framework version: v4.0.30319 Description: Le processus a pris fin en raison d'une exception non-gérée. Exception Info: System.TypeInitializationException Stack: à Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.Initialize() à Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.Initialize (String [] args) à Microsoft.WindowsAzure. ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.Initialize (System.String []) à Microsoft.WindowsAzure.Hosts.Worker.Loader.CreateConsoleRole (Microsoft.WindowsAzure.Hosts.Worker.Parameters) à Microsoft.WindowsAzure.Hosts.Worker. Loader.Main (System.String [])

Pour résoudre ce problème, j'ai fini par trébucher here, ce qui m'a conduit à this. J'ai téléchargé AzureTools sur ma VM de rôle de travailleur et j'ai attaché un débogueur au processus de recyclage WaWorkerHost. Voici un extrait pertinent du lien susmentionné:

AzureTools inclut une option sous l'onglet Utils pour attacher un débogueur au démarrage d'un processus. Passez à l'onglet Utils, cliquez sur Attacher le débogueur, sélectionnez WaIISHost dans la liste des processus, puis cliquez sur Attacher le débogueur. Vous verrez WaIISHost apparaître dans la liste Current Monitoring. AzureTools va attacher WinDBG (ou ce que vous spécifiez dans Emplacement du débogueur) à un processus surveillé la prochaine fois que le processus démarre. Notez qu'AzureTools attache uniquement l'instance suivante du processus cible démarré. Si le processus est en cours d'exécution, AzureTools l'ignore.

Debugging grâce à cela, j'ai découvert que je manquais l'attribut type pour mon tag filter dans le fichier app.config du travailleur Rôle. Une fois que j'ai ajouté cela comme indiqué ci-dessous, tout est tombé en place et le rôle de travailleur déployé avec succès.

<system.diagnostics> 
    <trace> 
     <listeners> 
     <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics"> 
      <filter type="" /> 
     </add> 
     </listeners> 
    </trace> 
    </system.diagnostics> 

Notez que pour résoudre la première erreur, j'aurais pu aussi utiliser AzureTools et déboguer de cette façon. Dans la plupart des cas, je considérerais que l'approche recommandée. Il se trouve que je n'ai pas découvert l'utilité tant que je n'ai pas été confronté à la seconde erreur et étant donné que mon application n'a pas encore été produite, je pouvais me permettre de mettre à jour mes références DLL.

J'espère que cela aidera quelqu'un d'autre.