昨天,我可以将我的服务完全部署到Windows Azure上的托管服务实例。今天,我总是遇到像
这样的错误6:09:56 PM - Preparing...
6:09:56 PM - Connecting...
6:09:59 PM - Uploading...
6:11:15 PM - Creating...
6:12:28 PM - Starting...
6:13:20 PM - Initializing...
6:13:21 PM - Instance 0 of role TestWebRole is initializing
6:18:39 PM - Instance 0 of role TestWebRole is busy
6:21:51 PM - Instance 0 of role TestWebRole is stopped
6:21:51 PM - Warning: All role instances have stopped
6:22:23 PM - Instance 0 of role TestWebRole is busy
6:23:26 PM - Instance 0 of role TestWebRole is stopped
6:23:26 PM - Warning: All role instances have stopped
这些错误通常是由于云服务器上不存在的依赖性而发生的(如果您搜索上面的警告,那就是您在SO和Google上找到的内容)。但是我检查了每一个依赖项,它们都在Copy Local=True
。
为了进一步隔离问题,我首先使用新的MVC 3 Web角色创建了一个全新的Azure项目,然后创建了一个带有标准ASP.NET Web角色的新Azure项目,但仍然没有运气。我尝试停用诊断程序,重新激活它。在Azure模拟器上,项目运行正常。
即使标准的Visual Studio也无法部署到Azure,我总是得到Warning: All role instances have stopped
。
感谢您的任何提示。
答案 0 :(得分:2)
如果项目在模拟器中运行良好,大部分时间都是因为您在计算机上安装了所有必需的依赖项,但在Windows Azure中没有。
我建议你看一下David的回答中的博客文章,除了解释如何禁用会话状态外,它还解释了必须设置为Copy Local以使MVC3正常工作的程序集。或者,您可以尝试使用Steve在其博文中描述的技术之一:http://blog.smarx.com/posts/asp-net-mvc-in-windows-azure
它可以真正帮助您激活远程桌面来解决此问题。如果您注意到您的实例正在循环播放,我建议您通过RDP连接并查看事件查看器(您可能需要尝试几次才能连接)。请注意应用程序日志中的ASP.NET警告,大多数情况下,这些警告会为您提供有关您缺少哪些程序集的更多信息。
答案 1 :(得分:1)
令人惊讶的是,它昨天仍然有效,但今天却没有。也就是说:在创建全新的asp.net项目时,默认会话状态提供程序将映射到本地SQL数据库,而Windows Azure中不存在该数据库。您需要编辑web.config以将其指向Windows Azure SQL数据库或缓存(共享缓存服务或SDK 1.7中可用的新角色内缓存)。
Nate Totten从去年this blog post讨论了会议问题。