检查Umbraco网站已准备就绪,并已连接到数据库

时间:2018-08-13 08:02:20

标签: c# umbraco recurring

我的Umbraco网站有一个重复任务,该任务每60分钟运行一次。问题是尚未安装Umbraco时,该任务会阻止安装过程。

我正在尝试通过以下方式检测我的Umbraco网站的状态:

var isApplicationInstalled = uQuery.RootNodeId != -1;
if (isApplicationInstalled)
{
    // run the task
}

但是uQuery.RootNodeId似乎总是返回-1,并且该任务从未运行。 如何检测到Umbraco网站已安装并且已连接到数据库?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下解决方案:在 ApplicationEventHandler 中覆盖 ApplicationStarted 方法。

所有必需的启动程序就绪后,将调用该方法。然后,您可以覆盖它,将全局设置设置为true(也许可以定义一个全局设置,例如UmbracoIsReady)。在重复执行的任务中,您只需检索UmbracoIsReady即可进行检查。

public class StartupHandler : ApplicationEventHandler
{
    protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication,
        ApplicationContext applicationContext)
    {
        base.ApplicationStarted(umbracoApplication, applicationContext);

        //Set a global variable/information to make sure that the Umbraco is ready
        Setting.UmbracoIsReady = true;
    }
}

答案 1 :(得分:1)

通过ApplicationContext检查Umbraco应用程序的状态更加容易:

ApplicationContext.Current.IsConfigured检查是否已配置Umbraco。 ApplicationContext.Current.DatabaseContext.CanConnect检查Umbraco是否可以连接到数据库。

因此代码将是:

    var isApplicationInstalled = ApplicationContext.Current.IsConfigured &&
                                    ApplicationContext.Current.DatabaseContext.CanConnect;
    if (isApplicationInstalled)
    {
        // run the task
    }
相关问题