我已使用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”会产生角色根本无法启动的效果吗?为什么角色会开始?
答案 0 :(得分:2)
我们的RoleEntryPoint
也没有启动Azure云服务Web角色。要解决此问题,请执行以下步骤:
packages.config
packages.config
和项目参考。Microsoft.WindowsAzure.ServiceRuntime
项目参考有Copy Local = true
@ mohamed-abed引导我们使用此解决方案,我们在Azure SDK和unofficial nuget package for Azure Runtime之间存在版本不匹配。
基本规则是 CCPROJ ProductVersion
应与您的网络角色中引用的程序集版本相匹配,否则RoleEntryPoint
将不会被调用。