我的Azure Cloud Service的Web角色在部署到Azure时运行良好,但无法使用仿真器运行。
OnStart()
开始时,似乎根本没有被击中,所以之前的某些东西会被卡住。该角色似乎无法启动,因为也未创建应用的自定义日志。任何想法我在哪里可以找到导致角色卡住的线索?
VS中的“输出”窗口将此作为最后一条消息:
Microsoft Azure Tools: Warning: Attempting to bind SSL Certificate with identity sha1:something for endpoint named HTTPS of role RoleName.
该角色定义了一些SSL证书以及HTTP和两个HTTPS端点。但是,删除这些似乎无法解决问题,然后它就会卡在此上(因为启用了RDP访问而自动添加):
Microsoft Azure Tools: Warning: Certificate identification setting 'Microsoft.WindowsAzure.Plugins.RemoteAccess.PasswordEncryption' for role 'RoleName' specified in the service configuration file is not declared in the service definition file in the Certificate or as part of an SSL endpont
(注意最后的拼写错误: - )。)
我已经查看了C:\ Users \ Me \ AppData \ Local \ dftmp下的日志。日志和EmulatorRuntimeLogs文件夹为空,DFAgentLogs \ DFAgent.log包含一些条目,这是重复的内容:
[2017/01 / 29,21:27:55.532,ERROR,00019400]< - RuntimeRole :: CreateRoleProcess(0x00000224DE6EA670)= 0x80070057 [2017/01 / 29,21:27:55.644,ERROR,00019400]< - RuntimeRole :: StartRoleProcess(0x00000224DE6EA670)= 0x80070057 [2017/01 / 29,21:27:55.748,ERROR,00019400]< - RuntimeRole :: LaunchDevExRoleHost(0x00000224DE6EA670)= 0x80070057 [2017/01 / 29,21:27:55.838,ERROR,00019400]< - RuntimeRole :: StartUnsafe(0x00000224DE6EA670)= 0x80070057 [2017/01 / 29,21:27:55.922,ERROR,00019400]< - RuntimeRole :: Start(0x00000224DE6EA670)= 0x80070057 [2017/01 / 29,21:27:56.021,ERROR,00019400]< - RuntimeBaseContainer :: StartRole_Unsafe(0x00000224DE681BE0)= 0x80070057 [2017/01 / 29,21:27:56.055,ERROR,00019400]< - RuntimeBaseContainer :: StartRole(0x00000224DE681BE0)= 0x80070057 [2017/01 / 29,21:27:56.079,ERROR,00019400]< - RuntimeStartRole = 0x80070057 [2017/01 / 29,21:27:56.110,INFO,00019400] StartRoleResult deployment29(73).RoleName_IN_0,80070057 [2017/01 / 29,21:27:56.110,INFO,00019400]得到通知 [2017/01 / 29,21:27:56.110,INFO,00019400] DestroyRoleConfigResources:RoleName_IN_0:0:cb0b9125-93b1-43e7-9780-f5c6a15f435a [2017/01 / 29,21:27:56.110,INFO,00019400]得到通知 [2017/01 / 29,21:27:56.110,INFO,00019400] StartRoleWorker返回0x80070057 [2017/01 / 29,21:27:56.114,INFO,00013244]被称为GetState [2017/01 / 29,21:27:56.114,INFO,00013244]共有3条通知。 [2017/01 / 29,21:27:56.114,INFO,00013244]角色通知0,实例:RoleName_IN_0:0:cb0b9125-93b1-43e7-9780-f5c6a15f435a状态:2 [2017/01 / 29,21:27:56.114,INFO,00013244]角色通知1,实例:RoleName_IN_0:0:cb0b9125-93b1-43e7-9780-f5c6a15f435a状态:10 [2017/01 / 29,21:27:56.114,INFO,00013244]角色通知2,实例:RoleName_IN_0:0:cb0b9125-93b1-43e7-9780-f5c6a15f435a状态:11 [2017/01 / 29,21:27:56.114,INFO,00013244]有1个完成事件。 [2017/01 / 29,21:27:56.114,INFO,00013244] CompletionEvent 0,类型:StartRoleCompleted Id:deployment29(73).RoleName_IN_0状态:0x2147942487 [2017/01 / 29,21:27:56.114,INFO,00013244] GetState返回。 [2017/01 / 29,21:27:56.115,INFO,00015700]被称为AcknowledgeNotifications [2017/01 / 29,21:27:56.115,INFO,00015700]清理通知和完成事件,最后一个序列= 3317 [2017/01 / 29,21:27:56.115,INFO,00013244]被称为StartRole [2017/01 / 29,21:27:56.115,INFO,00013244] StartRole返回。 [2017/01 / 29,21:27:56.115,INFO,00019400] StartRoleWorker,instance = deployment29(73).RoleName_IN_0 [2017/01 / 29,21:27:56.116,WARN,00019400]找不到角色部署29(73).RoleName_IN_0。 [2017/01 / 29,21:27:56.116,ERROR,00019400]< - RuntimeContainer :: FindRoleUnsafe = 0x80070490 [2017/01 / 29,21:27:56.135,INFO,00019400] SetupRoleConfigResources:RoleName_IN_0:0:cb0b9125-93b1-43e7-9780-f5c6a15f435a [2017/01 / 29,21:27:56.136,INFO,00019400]得到通知 [2017/01 / 29,21:27:56.136,INFO,00019400]起始角色 [2017/01 / 29,21:27:56.140,INFO,00019400]运行时服务器命名管道名称= \。\ pipe \ RdRuntimeServer。 [2017/01 / 29,21:27:56.140,INFO,00019400]运行时服务器命名管道超时时间= 30。 [2017/01 / 29,21:27:56.140,ERROR,00019400]无法创建进程" path \ to \ role \ project的\ folder \ csx \ Debug \ roles \ Lombiq.Hosting.RequestRouter .RouterRole \基\ 64 \ WaHostBootstrapper.exe" base \ x64 \ WaIISHost.exe。
但是我不知道为什么这个过程无法创建(文件在那里;虽然我的用户名中有一个重音字符,因此在路径中,它没有帮助移动文件夹到驱动器根)并且似乎没有任何其他信息。否则,存储和计算仿真器将启动并运行。
这些没有帮助:
同样的解决方案适用于我的同事的一台机器,所以它应该是我的机器和这个特定的机器的一些问题。
我还尝试使用一个空的Cloud Service项目,其中包含一个空的ASP.NET角色,同样的事情发生了。
类似的问题:Azure Emulator appears to Hanging on Web Role startup。
更新,越来越近了
我还在Windows日志/系统下的事件日志中获取这些内容:
特定于应用程序的权限设置不会为具有CLSID的COM Server应用程序授予“本地激活”权限 {6B3B8D23-FA8D-40B9-8DBD-B950333E2C52} 和APPID {4839DDB7-58C2-48F5-8283-E1D1807D0D7D} 从应用程序容器中运行的地址LocalHost(使用LRPC)到用户NT AUTHORITY \ LOCAL SERVICE SID(S-1-5-19)不可用SID(不可用)。可以使用组件服务管理工具修改此安全权限。
计算机默认权限设置不授予具有CLSID的COM Server应用程序的本地激活权限 {C2F03A33-21F5-47FA-B4BB-156362A2F239} 和APPID {316CDED5-E4AE-4B15-9113-7055D84DCC97} 从应用程序容器中运行的地址LocalHost(使用LRPC)到用户NT AUTHORITY \ LOCAL SERVICE SID(S-1-5-19)不可用SID(不可用)。可以使用组件服务管理工具修改此安全权限。
这是在这里描述和解决的问题:https://sajiviswam.wordpress.com/2011/04/15/the-machine-default-permission-settings-do-not-grant-local-activation-permission-for-the-com-server-application-with-clsid-000c101c-0000-0000-c000-000000000046-sharepoint-2010/在我的情况下,受影响的服务是ShellServiceHost和Immersive Shell(与博客文章所说的相反,我必须在HKCR下的注册表中查找CLSID条目CLSID。我在设置注册表项的权限后重新启动了我的计算机,但这两个组件的安全设置仍然显示为灰色。
除了“更改组件服务所有者和权限”下的博文中的内容之外,我尝试了多种方法来解决此问题,但没有成功:为Administrator_s_组设置此项,然后还提供完全控制权(重启后) )为管理员(单数)用户;启用权限继承;将所有者更改为我的(管理员级别)用户。我还尝试用Administrator_s_替换所有者,并选择替换所有子对象权限条目。
两个组件的安全设置仍然是灰色的。
更新2:
在我已经详细阐述的问题的基础上,这有助于:
我还需要在Regedit中设置AppID的权限(请参阅错误消息中不仅包含CLSID,还包括APPID),以便为Administrators组完全控制它们。在此之后,对于组件服务中受影响的组件,“安全”选项卡的选项不再显示为灰色。
因此,我可以为本地服务用户在两个组件下设置本地激活权限。
虽然这消除了事件日志中的错误,但是模拟器启动仍然停留在同一步骤,但这次没有任何暗示可能是错误的。
更新3:
重新安装3.0之前的Azure SDK版本没有帮助。在我的笔记本电脑上,Cloud Service可以启动,我的预感是因为该机器只安装了v2.9的SDK。
相关问题:Azure worker role getting stuck in Role state Unknown(没有解决方案有帮助)。
答案 0 :(得分:0)
在csdef文件中注释启动任务。它帮助了我。
答案 1 :(得分:0)
我还发现,通过在C:\ Users \ MyUserName \ Documents \ WindowsPowerShell中的Microsoft.PowerShell_profile中输入命令来提示输入,导致仿真器卡住了,因为它像使用任何其他PowerShell会话一样使用该配置文件。删除提示可以使其正常工作。