c# – Azure RoleEntryPoint未调用?
作者:互联网
我已使用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”会产生角色根本无法启动的效果吗?角色为什么开始?
解决方法:
我们的RoleEntryPoint也没有启动Azure云服务Web角色.要解决此问题,请执行以下步骤:
修复RoleEntryPoint未被调用
>将Web角色中的所有项目引用删除到Azure,然后删除packages.config
>从Azure项目中删除当前的Web角色(ccproj)
>将您的Web角色重新添加到Azure项目(这会重新添加依赖项)
>观察更新的packages.config和Project References.
>在Web角色中,确保Microsoft.WindowsAzure.ServiceRuntime Project Reference具有Copy Local = true
@ mohamed-abed引导我们使用这个解决方案,我们在Azure SDK和unofficial nuget package for Azure Runtime之间存在版本不匹配.
基本规则是您的CCPROJ ProductVersion应与Web角色中引用的Assembly版本匹配,否则将不会调用RoleEntryPoint.
标签:c,azure,azure-web-roles 来源: https://codeday.me/bug/20190702/1360110.html