我一直在尝试使用PowerShell,Azure模拟器和azure node.js sdk创建一个辅助角色,但是当我尝试通过工作进程开始添加模块时,我遇到了问题。
这些是我采取的步骤:
1)运行Powershell 2)创建一个新的azure node.js项目
new-azureserviceproject
3)添加webrole
附加azurenodewebrole
4)添加职员角色
附加azurenodeworkerrole
如果我在这个阶段运行项目
start-azureemulator -launch
网站运行正常,没有任何IIS错误。但是,当我开始将新模块安装到辅助角色并尝试再次运行时,我会遇到Windows IIS错误,例如" Windows Azure Web角色入口点已停止工作"没有任何关于它为什么停止的信息。是否有其他人遇到过这些错误,更重要的是有没有人有关于如何创建一个辅助角色来运行一个cron作业并与我的windows azure表存储器交谈的例子?我想要做的就是每5秒运行一次cron作业来检查表存储是否有任何新的更新并做一些事情。
有什么想法吗?
错误详情:
Problem Event Name: APPCRASH
Application Name: iisexpress.exe
Application Version: 8.0.8298.0
Application Timestamp: 4f620349
Fault Module Name: iiscore.dll
Fault Module Version: 8.0.8298.0
Fault Module Timestamp: 4f63b65c
Exception Code: c0000005
Exception Offset: 00021767
OS Version: 6.1.7601.2.1.0.256.28
Locale ID: 1033
Additional Information 1: f66d
Additional Information 2: f66d807b515d6b2dc6f28f66db769a01
Additional Information 3: 7b2f
Additional Information 4: 7b2f6797d07ebc2c23f2b227e779722e
更新,如果我将webrole和worker角色的实例数减少到1,那么它不会崩溃,也许这是天蓝色模拟器的问题?
答案 0 :(得分:0)
这里有几个问题,让我们从第一个开始。可以在此处找到使用添加模块(socket.io)的辅助角色的合适示例: https://www.windowsazure.com/en-us/develop/nodejs/tutorials/app-using-socketio/
接下来是关于Windows上模块的对话。某些具有二进制依赖关系的模块不能在Windows上运行。这已经是一个非常小的数字,但它仍然是一种可能性。您应该看看是否可以在模拟器外部运行工作者角色代码来验证这一点。
接下来我们应该考虑这个过程。您通常会将需要操作的更改从Web角色推送到存储队列,并从工作者角色中的at队列中提取。如果您有一个“cron模块”,则在触发计时器事件时从队列中拉出顶部项目。你总是可以在这里睡觉,但这种阻塞在节点世界中是不受欢迎的。
答案 1 :(得分:0)
这可能没有关系,但我想我应该提一下。我遇到了问题,因为NodeJS的默认版本似乎太旧而无法使用我正在使用的模块。您可能需要更改NodeJS的版本。要查看可用版本列表:
Get-AzureServiceProjectRoleRuntime
然后,应用特定版本(示例):
Set-AzureServiceProjectRole [Role_Name] Node 0.10.21