当前位置: 首页 > 知识库问答 >
问题:

Azure工作人员角色引发System.IO.FileNotFoundException

越扬
2023-03-14

我重新部署了一个可操作的 Azure 辅助角色,并进行了一些更改,这些更改涉及引用我设置的新类库项目,并开始看到辅助角色无休止地重新启动/回收。

事件查看器应用程序日志提供的帮助很少,因为我收到的错误非常通用。

来源:. NET运行时

应用程序:WaWorkerHost.exe框架版本:v4.0.30319描述:由于未处理的异常,进程被终止。异常信息:系统。IO.FileNotFoundException堆栈:在系统上。module handle . resolve type(System。Reflection.RuntimeModule,Int32,IntPtr*,Int32,IntPtr*,Int32,System。runtime . compiler services . objecthandleonstack)。module handle . resolve type(System。Reflection.RuntimeModule,Int32,IntPtr*,Int32,IntPtr*,Int32,System。runtime . compiler services . objecthandleonstack)。module handle . resolvetypehandlerinternal(System。Reflection.RuntimeModule,Int32,System。RuntimeTypeHandle[],系统。系统中的RuntimeTypeHandle[])。module handle . ResolveTypeHandle(int 32,System。RuntimeTypeHandle[],系统。系统中的RuntimeTypeHandle[])。reflection . runtime module . resolve type(int 32,System。类型[],系统。在系统中键入[])。reflection . custom attribute . filtercustomattributerecord(System。反射。CustomAttributeRecord,System。反射。元数据导入,系统。反射。汇编ByRef,系统。反射。RuntimeModule,System。MetadataToken,System。RuntimeType,Boolean,System。对象[],系统。收集。IList,系统。RuntimeType ByRef,System。IRuntimeMethodInfo ByRef,布尔ByRef,布尔ByRef)。reflection . custom attribute . getcustomattributes(System。Reflection.RuntimeModule,Int32,Int32,System。RuntimeType,Boolean,System。Collections.IList,Boolean)。reflection . custom attribute . getcustomattributes(System。反射。RuntimeAssembly,System。RuntimeType)。windows azure . hosts . worker . loader . createconsolerole(微软。windows azure . hosts . worker . parameters)。windows azure . 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\系统32\KERNELBASE.dll报告ID: 85f9c3f7-f3b8-11e6-80c1-0004ff9da18e故障包全名:故障包相关应用程序ID:

我已经搜索过这个,但没有遇到任何人收到像这样通用的错误消息。

我自己的日志也不能提供太多的洞察力。我只知道WorkerRole不符合OnStart方法。

还有其他日志可以帮助缩小问题范围吗?

先谢谢你。

共有1个答案

仲孙俊贤
2023-03-14

想通了...但不是以最优雅的方式。

我继续并更新了Nuget中用于辅助角色和类库项目的所有DLL。其中有一些东西解决了这个问题(我知道,不好吧?)但后来我面临另一个问题:

应用程序:WaWorker主机.exe框架版本:v4.0.30319 说明:由于未处理的异常,进程已终止。异常信息: System.TypeInitializationException Stack: at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.Initialize() at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.Initialize(String[] args) at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.Initialize(System.String[]) at Microsoft.WindowsAzure.Hosts.Worker.Loader.CreateConsoleRole(Microsoft.WindowsAzure.Hosts.Worker.Parameters) atMicrosoft.WindowsAzure.Hosts.Worker.Loader.Main(System.String[])

为了解决这个问题,我最终在这里偶然发现了这个问题。我在Worker Role VM上下载了AzureTools,并将调试器附加到回收WaWorkerHost进程。以下是上述链接的相关摘录:

AzureTools在Utils选项卡下包含一个选项,用于将调试器附加到进程的启动。切换到Utils选项卡,单击Attach Debugger,从进程列表中选择WaIISHost,然后单击Attach调试器。您将看到WaIISHost显示在当前监控列表中。AzureTools将在下一次启动受监视的进程时将WinDBG(或您在调试器位置中指定的任何内容)附加到该进程。请注意,AzureTools将仅附加启动的目标进程的下一个实例——如果该进程当前正在运行,则AzureTools会忽略它。

通过此调试,我发现我在辅助角色的 app.config 文件中缺少筛选器标记的 type 属性。如下图所示添加后,一切都到位了,辅助角色也部署得很成功。

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

希望这能帮助其他人。

 类似资料:
  • 我是Flink的新手,偶然看到一篇文章提到 “flink开发人员负责通过在流中安排水印来向前移动事件时间”。 所以,我想出了可能的答案。据我所知,如果我指示程序每隔秒发出水印。实际上,每隔5秒,Flink就会调用的方法。如果该方法返回一个时间戳大于前一个水印的时间戳的非空值,则会转发新的水印。此检查对于确保事件时间不断增加是必要的;否则,不会产生水印。 因此,一旦窗口中的所有内容都到达,它将触发操

  • 问题内容: Maven的支持与,但是,我看到有效的作用,并没有定论。 这些角色只是出于文档目的的纯文本吗?如果没有可供选择的正式角色列表,是否存在有关如何设置角色名称格式的规则或标准? 例如,是UI开发人员a ,a ,a 等。 问题答案: 这就是我在XSD中看到的。角色只是简单的,主要用于文档。

  • 我试图为AWS实现“开发人员身份验证身份”,如下所示:https://AWS.amazon.com/blogs/mobile/amazon-cognito-innecling-developer-authenticated-identities/ 我很好地理解了基本流程。 我怎样才能做到这一点?

  • 我可能错过了这个问题的一些明显的东西,但是我似乎无法将endpoint部署为一个Azure辅助角色来在正式生产环境中工作;它在本地Azure模拟器下工作得很好。 以下是我使用nservicebus示例附带的一个示例项目复制此问题所采取的步骤: 从3.2.8版本下载了示例。 使用AzurePubSub示例,并更改了Web和辅助角色中的配置,以使用实际的存储位置,而不是本地开发存储。 使用本地计算模拟

  • 如果我使用 JBoss Developer Studio 创建一个名为 “getting-start” 的 maven-archetype-webapp 类型的新 maven 项目,那么我会收到以下警告: 我安装了Java SE 7,并将系统变量Java_Home设置为jdk目录。我还通过JBoss DS的安装向导设置了jdk目录的路径。

  • 问题内容: 我正在创建一个云服务,其中有一个工作人员角色在后台运行一些繁重的处理,为此,我希望Redis实例在该工作人员本地运行。 我要做的是以部署工作人员时安装/配置Redis实例的方式设置工作人员角色项目。 Redis数据库将在每次作业启动时清除。 我已经看过了MSOpenTech的Redis用的NuGet安装Windows,但我不能确定我怎么会得上的工人角色实例这个工作。是否有聪明的方法来设