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

标签 .net azure azure-storage azure-worker-roles

我有一个包含一个 Web 角色和一个 Worker 角色的项目。 每当我在本地测试它时,我的网络和 worker 角色都会按预期工作。 (请注意,虽然本地版本使用 Azure 计算模拟器,但服务总线队列和消息队列使用实时云版本。) 但是,云服务辅助角色在某些操作期间容易崩溃。它会导致实例“回收”并且消息卡在 Azure 服务总线队列中。直到我在本地运行云服务,它才成功处理该消息,然后将其从队列中删除。即使该角色有效,Azure 也经常在仪表板上告诉我该辅助角色运行“不健康”。

有一次,Azure 门户打印了此错误:

Unhandled Exception: System.Reflection.ReflectionTypeLoadException

我为此在我的项目中添加了异常处理,并在将更新部署到云后再次尝试,但同样的事情不断发生。当我将异常处理添加到我的项目中时,我必须将 System.Reflection 库添加到我的辅助角色中,但这让我更加困惑。我不明白为什么我在调用一个我最初没有在项目中使用的库时收到错误。

有人对这个问题有什么想法吗?

更新:

我做了一些手动调试,并注意到异常是在辅助角色的 Run() 中调用的。导致问题的代码行涉及使用 Entity Framework 调用数据库。具体行是:

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

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

最佳答案

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

区别:在OS Family 2中,WaWorkerHost运行在Role初始化过程生成的临时帐户(带有GUID名称)下,该帐户具有特殊权限;在 OS Family 3 中,WaWorkerHost 由“NETWORK SERVICE”帐户运行,该帐户缺少辅助角色的某些权限。

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

<Runtime executionContext="elevated" />

关于.net - Azure云服务工作角色崩溃且不健康,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13831500/

相关文章:

.net - 简化字符串异常检查

C# 如何将流重定向到控制台 Out?

azure - 以编程方式列出 Azure Continuous WebJob 函数

powershell - 如何列出 Azure 存储容器和 Blob

c# - 带有 2 个表的 WPF TreeView(分层数据模板)

c# - 引用基于编译器开关的 .NET 程序集

azure - 通过小型企业订阅进行 Office365 Azure Active Directory Graph 客户端访问

.htaccess - Zend Framework 2 中从 .htaccess 到 web.config 的 URL 重写

azure - 获取 403 : "Insufficient privileges to complete the operation." when attempting to query Graph API

azure - 提供对 Azure Blob 容器中文件夹的访问