我重新部署了一个可操作的Azure辅助角色,其中包含一些更改,这些更改涉及引用我已设置的新类库项目,并且已开始看到辅助角色无休止地重新启动/回收。
事件查看器应用程序日志提供的帮助非常少,因为我收到的错误非常通用。
来源:.NET Runtime
应用程序:WaWorkerHost.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程终止。 异常信息:System.IO.FileNotFoundException 堆: 在System.ModuleHandle.ResolveType(System.Reflection.RuntimeModule,Int32,IntPtr *,Int32,IntPtr *,Int32,System.Runtime.CompilerServices.ObjectHandleOnStack) 在System.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.Type []) 在System.Reflection.CustomAttribute.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 [])
来源:应用程序错误
错误应用程序名称:WaWorkerHost.exe,版本:2.7.1198.768,时间戳:0x57159090 错误模块名称:KERNELBASE.dll,版本:6.3.9600.18340,时间戳:0x57366075 异常代码:0xe0434352 故障偏移:0x0000000000008a5c 错误进程id:0xf20 错误应用程序启动时间:0x01d287c5480b416f 错误的应用程序路径:E:\ base \ x64 \ WaWorkerHost.exe 错误模块路径:D:\ Windows \ system32 \ KERNELBASE.dll 报告编号:85f9c3f7-f3b8-11e6-80c1-0004ff9da18e 错误包全名: 错误的包相关应用程序ID:
我已经搜索过这个但是没有人收到任何收到错误消息的人。
我自己的日志记录也没有提供太多的见解。我所知道的是,WorkerRole没有点击OnStart方法。
是否还有其他日志可以帮助缩小问题范围?
提前致谢。
答案 0 :(得分:1)
想出来......但不是以最优雅的方式。
我继续并从Nuget更新了所有DLL的worker角色和类库项目。那里的东西解决了这个问题(我知道,不对吧?)然后我面对另一个问题:
应用程序:WaWorkerHost.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程终止。 异常信息:System.TypeInitializationException 堆: 在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 [])
为了解决这个问题,我最终偶然发现了here,这导致我this。我在Worker Role VM上下载了AzureTools,并将调试器附加到回收的WaWorkerHost进程。以下是上述链接的相关摘录:
AzureTools在Utils选项卡下包含一个选项,用于将调试器附加到进程的启动。切换到Utils选项卡,单击Attach Debugger,从进程列表中选择WaIISHost,然后单击Attach Debugger。您将在“当前监控”列表中看到WaIISHost显示。 AzureTools会在下次启动该过程时将WinDBG(或您在调试器位置中指定的任何内容)附加到受监视的进程。请注意,AzureTools将仅附加启动的目标进程的下一个实例 - 如果该进程当前正在运行,则AzureTools将忽略它。
通过调试,我发现我在Worker Role的app.config文件中缺少type
标记的filter
属性。一旦我将其添加到下面,如下所示,所有内容都已落实到位,并且成功部署了辅助角色。
<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引用。
希望这有助于其他人。