Azure RoleEntryPoint未调用?

时间:2015-05-14 08:40:43

标签: c# azure azure-web-roles

我已使用SDK 2.6版将我的解决方案部署到Azure CloudService。 解决方案运行正常,现在我想从RoleEntryPoint配置一些IIS设置(比如保持Threadpool始终运行)。

无论我做什么,似乎我的RoleEntryPoint永远不会被调用。 我试图追踪信息,我抛出异常,我甚至在OnStart()中返回“false”。 我部署了我的包,Cloudservice实例重新启动,一切都很好。

这是我的简单课程:

using System;
using System.Diagnostics;
using System.Linq;
using Elmah;
using Microsoft.Web.Administration;
using Microsoft.WindowsAzure.Diagnostics;
using Microsoft.WindowsAzure.ServiceRuntime;
using Telerik.Sitefinity.Cloud.WindowsAzure;

namespace SitefinityWebApp
{
public class AzureWebRole : RoleEntryPoint
{

    public override void Run()
    {
        Trace.WriteLine("Entering Run method");
        Trace.TraceInformation("Run");

        base.Run();
    }
    public override bool OnStart()
    {
        return false;
        Trace.WriteLine("Entering OnStart method");
        Trace.TraceInformation("OnStart");

        throw new System.ApplicationException("you are going down!");

        return base.OnStart();
    }
}
}

这个课程在我的主要WebRole-Assembly中。 部署后,我尝试“重新映像”并重新启动VM。两者都应该是不必要的,但我想确保该角色有机会调用RoleEntryPoint。

知道为什么没有调用代码?我知道从OnStart返回“false”会产生角色根本无法启动的效果吗?为什么角色会开始?

1 个答案:

答案 0 :(得分:2)

我们的RoleEntryPoint也没有启动Azure云服务Web角色。要解决此问题,请执行以下步骤:

修复RoleEntryPoint未被调用

  1. 将您的Web角色中的所有项目引用删除到Azure,然后删除packages.config
  2. Azure项目中删除当前的Web角色( ccproj
  3. 将您的Web角色重新添加到 Azure项目重新添加依赖项
  4. 观察更新的packages.config项目参考
  5. 在您的网络角色中,确保Microsoft.WindowsAzure.ServiceRuntime 项目参考Copy Local = true
  6. @ mohamed-abed引导我们使用此解决方案,我们在Azure SDKunofficial nuget package for Azure Runtime之间存在版本不匹配。

    基本规则是 CCPROJ ProductVersion应与您的网络角色中引用的程序集版本相匹配,否则RoleEntryPoint将不会被调用。