5

我们有一个 Azure 辅助角色 - .NET 4.0 - 在 osFamily="2" (Server 2008R2) 上部署到 Azure 时运行良好。但是,当我们使用 osFamily="3" (Server 2012) 进行部署并且没有其他代码更改时,worker 角色会不断回收,并在服务器事件日志中出现以下 2 个错误:

错误应用程序名称:WaWorkerHost.exe,版本:6.0.6002.18488,时间戳:0x505cf7ca 错误模块名称:KERNELBASE.dll,版本:6.2.9200.16384,时间戳:0x5010ab2d 异常代码:0xe0434352 错误偏移:0x00000000000189cc 错误进程 id:错误进程 id:应用程序启动时间:0x01cdd4318f76d221 错误应用程序路径:E:\base\x64\WaWorkerHost.exe 错误模块路径:D:\Windows\system32\KERNELBASE.dll 报告 ID:cf1810b0-4024-11e2-93ec-00155d4250e3 错误包全名:错误的包相关应用程序 ID:

应用程序:WaWorkerHost.exe 框架版本:v4.0.30319 描述:进程因未处理的异常而终止。异常信息:System.InvalidOperationException 堆栈:在 Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0() 在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean ) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System .Object) 在 System.Threading.ThreadHelper.ThreadStart()

有任何想法吗?

更新 ------------------ 发现第三个异常:

应用程序:WaWorkerHost.exe 框架版本:v4.0.30319 描述:进程因未处理的异常而终止。异常信息:System.Security.Cryptography.CryptographicException 堆栈:在 Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0() 在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System .Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading .ContextCallback, System.Object) 在 System.Threading.ThreadHelper.ThreadStart()

我们在 LocalComputer/My 中使用证书来解密连接字符串。证书成功部署到 OsFamily="2" (Server 2008R2),并将 Worker 角色用户添加到私钥(在 RDP 会话中验证)。但是,对于 OsFamily="3" (Server 2012) - 未部署证书,因此出现加密错误。跟进 Azure 支持……哎呀。

4

1 回答 1

5

来自 Azure 支持工程师:

经过深入挖掘,发现了不同之处:在OS Family 2中,WaWorkerHost是由Role初始化过程生成的临时账户(带有GUID名称)运行的,该账户有权访问证书私钥;在 OS Family 3 中,WaWorkerHost 由“NETWORK SERVICE”帐户运行,该帐户没有私钥访问权限。

我正在联系制作组,我们将深入调查这个问题。我会及时向大家发布。

于 2012-12-10T22:00:32.053 回答