Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Azure云服务工作人员角色崩溃且不健康_.net_Azure_Azure Storage_Azure Worker Roles - Fatal编程技术网

.net Azure云服务工作人员角色崩溃且不健康

.net Azure云服务工作人员角色崩溃且不健康,.net,azure,azure-storage,azure-worker-roles,.net,Azure,Azure Storage,Azure Worker Roles,我有一个具有一个Web角色和一个Worker角色的项目。 每当我在本地进行测试时,我的web和worker角色都能按预期工作。(注意,尽管本地版本使用Azure Compute Emulator,但服务总线队列和消息队列使用live cloud版本。) 但是,云服务工作者角色在某些操作期间有崩溃的趋势。它会导致实例“回收”,消息会卡在Azure服务总线队列中。直到我在本地运行云服务,它才成功地处理消息,然后将其从队列中删除。即使在该角色工作时,Azure也经常在仪表板上告诉我工作人员角色正在运行

我有一个具有一个Web角色和一个Worker角色的项目。 每当我在本地进行测试时,我的web和worker角色都能按预期工作。(注意,尽管本地版本使用Azure Compute Emulator,但服务总线队列和消息队列使用live cloud版本。) 但是,云服务工作者角色在某些操作期间有崩溃的趋势。它会导致实例“回收”,消息会卡在Azure服务总线队列中。直到我在本地运行云服务,它才成功地处理消息,然后将其从队列中删除。即使在该角色工作时,Azure也经常在仪表板上告诉我工作人员角色正在运行“不健康”

Azure门户一度打印了此错误:

未处理的异常:System.Reflection.ReflectionTypeLoadException

我在我的项目中为此添加了异常处理,并在将更新部署到云中后重试,但同样的事情一直在发生。当我将异常处理添加到我的项目中时,我不得不将System.Reflection库添加到我的工作者角色中,但这让我更加困惑。我不明白为什么我接到了一个错误,因为我调用了一个我在项目中根本没有使用过的库

有人知道这个问题是什么吗

更新:

我进行了一些手动调试,并注意到在Worker角色的Run()中调用了异常。导致问题的代码行涉及使用实体框架调用数据库。具体行为:

Image-imageEntity=db.Images.Find(ImgViewFromQueue.Id)


我想知道这个问题是否与Azure服务器上未正确启用或配置Entity Framework有关。

我在OSFamily=3(服务器2012)上运行辅助角色时遇到类似问题。如果您在3上运行并且可以回滚到2,您可能会发现worker角色工作得很好。我在Azure支持工程师的帮助下回答了我的问题-

区别在于:在OS系列2中,WaWorkerHost在角色初始化过程生成的临时帐户(具有GUID名称)下运行,该帐户具有特殊权限;在操作系统系列3中,WaWorkerHost是通过“网络服务”帐户运行的,该帐户缺少工作角色的某些权限

如果必须使用OSfamily 3,可以尝试使用提升的权限运行。在cscfg文件中的
元素中,添加子项:

<Runtime executionContext="elevated" />


不确定是否可以启用InelliTrace并重新部署包,希望您能在系统中找到实际的异常。就我的2美分。

你能检查一下你是否犯了上面列出的任何错误吗?我只是尝试了做他们在那页上提到的事情,将所有引用都设置为true,但没有解决任何问题。在你的工作者角色中,你是使用Linq还是ADO.NET?control reach OnStart()吗?如果是,请将OnStart()和Run()实现包装到try catch和catch中,并使用调用堆栈和所有可能的详细信息记录异常。@AshwinSingh我使用的是实体框架(我认为是使用ADO.NET)。我项目中的配置文件使用的是OSFamily=2,云服务在Server 2008 R2上运行,因此,我认为我有一个不同的问题。你能将RDP导入实例并检查事件日志吗。包括来自那里的任何错误,以及您在其他地方记录的所有错误,以及完整的堆栈跟踪;因此,在您的csdef文件中。