2017-02-15 116 views
1

我重新部署了一個可操作的Azure工作者角色,只做了一些涉及引用新建的類庫項目的更改,我已經設置並開始無休止地重新啓動/回收工作人員角色。Azure工作者角色拋出System.IO.FileNotFoundException

事件查看器應用程序日誌提供的幫助很少,因爲我收到的錯誤非常普遍。

來源:.NET運行

應用:WaWorkerHost.exe Framework版本:v4.0.30319 說明:該過程由於未處理的異常終止。 異常信息信息:System.IO.FileNotFoundException 堆棧: 在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) at System.ModuleHandle.ResolveTypeHandleInternal(System.Reflection.RuntimeModule,Int32,System.RuntimeTypeHandle [ ],System.RuntimeTypeHandle []) at System.ModuleHandle.ResolveTypeHandle(Int32,System.RuntimeTypeHandle [],System.RuntimeTypeHandle []) at 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.RuntimeMethodInfo ByRef,Boolean ByRef,Boolean ByRef) at System.Reflection.CustomAttribute.GetCustomAttributes(System.Reflection.RuntimeModule,Int32,Int32,System.RuntimeType,Boolean,System.Collections.IList布爾) 在System.Reflection.CustomAttribute.GetCustomAttributes(System.Reflection.RuntimeAssembly,System.RuntimeType) 在Microsoft.WindowsAzure.Hosts.Worker.Loader.CreateConsoleRole(Microsoft.WindowsAzure.Hosts.Worker.Parameters) 微軟.WindowsAzure.Hosts.Worker.Loader.Main(System.String [])

來源:應用程序錯誤

錯誤的應用程序名稱:WaWorkerHost.exe,版本:2.7.1198.768,時間戳:0x57159090 錯誤模塊名稱:KERNELBASE.dll,版本:6.3.9600.18340,時間戳:0x57366075 異常代碼:0xe0434352 故障偏移:0x0000000000008a5c 出錯進程ID:0xf20 錯誤的應用程序的開始時間:0x01d287c5480b416f 錯誤的應用程序路徑:E:\基\ 64 \ WaWorkerHost.exe 錯誤模塊路徑:d:\ Windows \ SYSTEM32 \ KERNELBASE.d LL 報告編號:85f9c3f7-f3b8-11e6-80c1-0004ff9da18e 斷裂作用包全名: 斷裂作用包相對應用程序ID:

我搜索了這一點,但整個人還沒來收到錯誤消息如此通用。

我自己的日誌記錄也不能提供很多見解。我所知道的是WorkerRole不會觸及OnStart方法。

是否有任何其他日誌可以幫助縮小問題的範圍?

在此先感謝。

回答

1

想出來......但不是以最優雅的方式。

我繼續並更新了Nuget的所有DLL,以供工作者角色和類庫項目使用。東西在裏面固定的問題(我知道,壞的吧?),但當時我面臨着另一個問題:

應用:WaWorkerHost.exe Framework版本:v4.0.30319 說明:該工藝由於終止的未處理的異常。 異常的信息:System.TypeInitializationException 堆棧: 在Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.Initialize() 在Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.Initialize(字串[] args) 在Microsoft.WindowsAzure。 ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.Initialize(System.String []) at Microsoft.WindowsAzure.Hosts.Worker.Loader.CreateConsoleRole(Microsoft.WindowsAzure.Hosts.Worker.Parameters) at Microsoft.WindowsAzure.Hosts.Worker。 Loader.Main(System.String [])

爲了解決這個問題,我最終偶然發現了here,這導致我this。我在我的工作者角色虛擬機上下載了AzureTools,並將調試器連接到了回收WaWorkerHost進程。以下是上述鏈接的相關摘錄:

AzureTools在Utils選項卡下包含一個選項,用於將調試器附加到進程啓動。切換到Utils選項卡,單擊Attach Debugger,從進程列表中選擇WaIISHost,然後單擊Attach Debugger。您會在當前監控列表中看到WaIISHost。 AzureTools將在下次啓動進程時將WinDBG(或您在Debugger Location中指定的任何內容)附加到受監視的進程。請注意,AzureTools只會附加啓動的目標進程的下一個實例 - 如果進程當前正在運行,則AzureTools將忽略它。通過這個

調試,我發現我失蹤了我在Worker角色的app.config文件filter標籤type屬性。一旦我在下面顯示的內容中添加了這些內容,一切就緒了,並且成功部署了worker角色。

<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引用。

希望這可以幫助別人。

相關問題