检查 Umbraco 站点是否准备就绪并且已连接到数据库

Check Umbraco site is ready and it's connected to the database

我的 Umbraco 站点有一个周期性任务,每 60 分钟 运行s。问题是当 Umbraco 还没有安装时,任务会阻止安装过程。

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

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

但是uQuery.RootNodeId似乎总是return-1而任务从来没有运行。 如何检测 Umbraco 站点已安装并且已连接到数据库?

您可以尝试这个解决方案:覆盖 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;
    }
}

通过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
    }