我在管理控制台中有一个无法部署的工作角色(在初始化和中止之间循环).它在模拟器中运行良好.
令人沮丧的是,部署失败了,它似乎几乎不可能找到原因.
我已经检查了所有连接字符串,启用了诊断程序,检查了我所有的程序集已部署,googled ALOT并丢失了一些头发.
我现在的观点是,我一点一点地添加代码,并重新部署以找到失败的代码,这个过程非常缓慢.
worker本身连接到sql azure和azure存储.我把它连接到模拟器中的实时端点没有任何问题.
配置StructureMap(IoC)后,它似乎失败了.但是,我在我的网络角色中使用几乎相同的代码,这很好.
那我在哪里可以从这里(除了瓶子)?
我将首先重新调整您目前收到的反馈.最大的杀手是WorkerRole中的Run()过程.如果WorkerRole在启动时遇到问题,您可以使用try/catch将代码包装在此方法中并记录它.
如果您选择使用内置诊断程序,我建议您阅读Ryan Dunn的博客以及smarx的博客.两者都踩到了这个基础,并且在他们去的时候做了很好的记录/分享工作.MSDN网站(对不起,首先回答所以只有两个链接:))在这个主题上也有了很大的改进.
我将添加到这个对话中的部分是你如何遵循建议.我没有使用Intellitrace,因为我无法访问它,并且在使用远程桌面时(可以在Visual Studio中完成)到我的角色.如果配置log4net或类似的东西(角色的本地),您将能够通过RDP登录并读取日志.
现在,我们经常发现的两件事情......
UseDevelopmentStorage = True - 这是默认设置,可能会在部署时产生问题.已经写了很多相关内容.
依赖关系 - 开发人员可以访问许多不在托管角色中的东西.最简单的例子是IMO,它是ASP.NET MVC.您既可以使用"稳定版本"理念进行管理,也可以使用Web平台安装程序命令行(dunnry的博客上还有Azure Boostrapper)来启动角色.
对我来说,关键是RDP,因为你可以实际登录,看看发生了什么.
更新 - 不能相信我忘了这个,因为它一直杀了我,但是,如果使用SQL Azure,你可能还需要配置防火墙.在开发过程中,我们经常会破坏和重新部署我们的角色,而不是更新,并导致偶尔的IP地址更改.如果未在涉及SQL Azure的防火墙中配置这些,则可能会出现问题.
希望这有助于人类.
| 归档时间: |
|
| 查看次数: |
6796 次 |
| 最近记录: |