添加TwilioController基类继承后,Microsoft Azure MVC 3 Web角色无法启动

Jim*_*TAT 5 asp.net-mvc azure twilio asp.net-mvc-3

Azure Web角色(MVC 3项目)不会从Twilio控制器类开始

  • 我有一个在MS Azure上托管的MVC 3应用程序.它发布到Azure Web角色 - 没有问题.
  • 我添加了Nuget Twilio和Twilio.Mvc软件包.它仍然发布到Azure Web角色 - 没有问题.
  • 我添加了一个继承自Mvc.TwilioController基类的类,随后Azure Web角色不再启动.
  • 如果我删除TwilioController类继承,则Web角色启动.

项目在我的本地VS Azure模拟器环境中发布,运行和twilio功能很好.

该项目参考文献; Twilio.api,Twilio.mvc,Twilio.Twiml,RestSharp和NewtonSoft.Json都设置为CopyLocal = True.

所有Azure诊断日志记录/跟踪都已启用,并且每5秒发送到表存储,但在Web角色无法启动时没有可用的日志数据.注意:如果我注释掉twilioController,我会获得大量日志数据,因此可以正确配置Azure Diags.

由于Web角色继续中止/循环/中止,因此没有机会通过RDP进行进一步的故障排除.


大约每分钟都会将以下两个错误写入失败的Web角色的Windows系统事件日志中:

属于网站'1273337584'的应用程序'/'具有无效的AppPoolId'ca5c9ecb-e68d-4f3a-84c2-c0b4430373e9'集.因此,应用程序将被忽略.

.

站点1273337584已禁用,因为为站点定义的根应用程序无效.有关根应用程序无效原因的信息,请参阅上一个事件日志消息.


重现的步骤(确切的步骤):

  1. 安装Azure Sdk v 1.6
  2. 使用Azure模板创建新项目(visual studio 10 sp1)
  3. 选择Asp.net MVC 3 Web角色
  4. 构建并发布到Azure
  5. 成功 - Web角色开始
  6. 添加Nuget Package"Twilio"版本3.3.2
  7. 添加Nuget包"Twilio.Mvc"3.1.3版
  8. 构建并发布到Azure
  9. 成功 - Web角色开始
  10. 创建一个空控制器(HelloController).请参阅下面的代码段.
  11. 添加TwilioController基类(例如Public Class HelloController:TwilioController)
  12. 构建并发布到Azure
  13. 失败 - 网络角色只是cyles/aborts/cyles.
  14. 注释掉TwilioController(例如Public Class HelloController //:TwilioController)
  15. Buld并发布到Azure
  16. 成功 - 网络角色开始

    using System.Web.Mvc;
    using Twilio.TwiML.Mvc;
      namespace WindowsAzureProject857481.Controllers
        {
            public class HelloController : TwilioController
            {
                //
                // GET: /Hello/
    
                public ActionResult Index()
                {
                    return View();
                }
    
    Run Code Online (Sandbox Code Playgroud)

任何想法都赞赏.

谢谢,吉姆

Dev*_*der 4

吉姆:

我在 Twilio 工作,拥有.NET 帮助程序库。

发生的情况是,Twilio.Mvc 程序集正在寻找 2.0 版本的 System.Web.Mvc 程序集,因为这是它构建的目标。它没有找到它,因为它显然没有与您的 MVC 3 项目打包在一起。

修复相当简单。获取 Twilio.Mvc 源,将引用更改为较新版本的 MVC 并重新编译程序集。我相信,如果您不想自己动手,我们的支持团队会与您联系并提供我为您构建的版本。

我认为如果您想尝试的话,可能还有一种方法可以使用程序集绑定重定向来解决问题。

德文