编程语言
首页 > 编程语言> > c# – Azure RoleEntryPoint未调用?

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 SDKunofficial nuget package for Azure Runtime之间存在版本不匹配.

基本规则是您的CCPROJ ProductVersion应与Web角色中引用的Assembly版本匹配,否则将不会调用RoleEntryPoint.

标签:c,azure,azure-web-roles
来源: https://codeday.me/bug/20190702/1360110.html