繁体   English   中英

Azure Web角色在部署时开始

[英]Azure web role start on deploy

我正在创建一个在Web角色后台运行的消息服务。 网络角色启动时,它将启动Quartz作业,该作业每天运行一次并发送一些电子邮件。 我现在将自己的网络角色设置为永远不会因为闲置而入睡。 这使我的工作得以执行,而不管我的网站上的活动如何。

我遇到的问题是,如果我在站点首次部署时不访问我的站点,则该工作永远不会开始。 我担心如果我的webrole曾经由于某种Azure魔术而被转移到新实例,则我的电子邮件服务将无法运行。

作业是通过Application_Start方法在Global.asax中启动的。 部署Web角色后,如何使其自动启动?

-编辑-

最初,我试图从WebRole.cs OnStart开始我的工作,但是后来我从实体框架中获取有关数据库连接的错误。 因此,如果有人知道如何从WebRole.cs OnStart访问我的Web配置中的连接字符串,那也将回答我的问题。

将您的代码放在WebRole.cs中

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        Task.Factory.StartNew(StartQuartzJob);
        return base.OnStart();
    }

    private void StartQuartzJob()
    {
        // Do work here.            
    }
}

此代码在您的实例启动时运行(在部署之后,重新启动之后...)。 这样做的好处是,它可以在Web应用程序在IIS中启动之前运行的不同进程( WaIISHost.exe )中运行。 因此,即使您没有去往该实例的任何请求,或者您的应用程序池处于回收状态,此过程也将继续运行。 请记住,由于这是一个不同的过程,因此您将无权访问web.config

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM