2017-02-15 14 views
1

Я переделал рабочую роль рабочего Azure с несколькими изменениями, которые связаны со ссылкой на новый проект библиотеки классов, который я создал, и начали замечать, что рабочая роль бесконечно перезагружается/перерабатывается.Роль броска ролика Azure System.IO.FileNotFoundException

Журналы приложений просмотра событий предоставляют очень небольшую помощь, поскольку полученная ошибка является очень общей.

Источник: .NET Продолжительность

Применение: WaWorkerHost.exe Framework версии: v4.0.30319 Описание: Процесс был прекращен из-за необработанного исключения. Exception Информация: System.IO.FileNotFoundException Stack: на System.ModuleHandle.ResolveType (System.Reflection.RuntimeModule, Int32, IntPtr *, Int32, IntPtr *, Int32, System.Runtime.CompilerServices.ObjectHandleOnStack) в системе. 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 [], System. Тип []) на System.Reflection.CustomAtt ribute.FilterCustomAttributeRecord (System.Reflection.CustomAttributeRecord, System.Reflection.MetadataImport, System.Reflection.Assembly ByRef, System.Reflection.RuntimeModule, System.Reflection.MetadataToken, System.RuntimeType, Boolean, 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) в Microsoft .WindowsAzure.Hosts.Worker.Loader.Main (System.String [])

Источник: Ошибка приложения

Faulting имя приложения: WaWorkerHost.exe, версия: 2.7.1198.768, штамп времени: 0x57159090 Faulting имя модуля: KERNELBASE.dll, версия: 6.3.9600.18340, отметка времени : 0x57366075 Исключение код: 0xe0434352 Fault смещение: 0x0000000000008a5c Сбойное идентификатор процесса: 0xf20 Faulting время запуска приложения: 0x01d287c5480b416f Сбойное пути приложения: E: \ базы \ x64 \ WaWorkerHost.exe Faulting модуль путь: D: \ Windows \ system32 \ KERNELBASE.d Л.Л. Report Id: 85f9c3f7-f3b8-11e6-80c1-0004ff9da18e Сбойное пакет Полное наименование: Сбойное пакет-относительный идентификатор приложения:

Я искал для этого, но не попадались никому получаю ошибку сообщение как общее.

Мое собственное ведение журнала также не дает большого понимания. Все, что я знаю, это то, что WorkerRole не ударил по методу OnStart.

Есть ли другие журналы, которые могли бы помочь сузить проблему?

Заранее спасибо.

ответ

1

Придумал это ... но не самым изящным способом.

Я пошел и обновил все библиотеки DLL от Nuget для проектов рабочей роли и библиотеки классов. Что-то там зафиксировано, что проблема (я знаю, плохо ли?), Но тогда я столкнулся с другим:

Применение: WaWorkerHost.exe Framework Version: v4.0.30319 Описание: Процесс был завершен из-за необработанное исключение. Exception Информация: System.TypeInitializationException Stack: на Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.Initialize() в Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.Initialize (String [] арг) в 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 [])

Чтобы решить эту проблему, я в конце концов наткнулся на here, что привело меня к this. Я загрузил AzureTools в свою рабочую виртуальную машину и подключил отладчик к процессу утилизации WaWorkerHost. Ниже приведена соответствующая выдержка из вышеупомянутой ссылки:

AzureTools включает опцию на вкладке Utils для присоединения отладчика к запуску процесса. Перейдите на вкладку «Утилиты», нажмите «Прикрепить отладчик», выберите «WaIISHost» в списке процессов и нажмите «Прикрепить отладчик». Вы увидите, что WaIISHost отображается в списке «Текущий мониторинг». AzureTools присоединяет WinDBG (или все, что вы указываете в местоположении отладчика) к контролируемому процессу в следующий раз, когда этот процесс запустится. Обратите внимание, что AzureTools будет прикреплять только следующий экземпляр целевого процесса, который запускается - если процесс в настоящее время запущен, AzureTools игнорирует его.

Отладка через это, я обнаружил, что я пропускал атрибут type для моего filter тега в файле app.config работника роли. Как только я добавил, что, как показано ниже, все встало на свои места, и рабочая роль развернулась успешно.

<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> 

Обратите внимание, что для устранения первой ошибки я мог бы также использовать AzureTools и отлаживать этот путь. В большинстве случаев я бы счел целесообразным подход. Так получилось, что я не узнал об утилите, пока не столкнулся со второй ошибкой, и учитывая, что мое приложение еще не было выпущено, я мог бы позволить мне обновлять ссылки на DLL.

Надеюсь, это поможет кому-то еще.

 Смежные вопросы

  • Нет связанных вопросов^_^