我的Umbraco网站有一个重复任务,该任务每60分钟运行一次。问题是尚未安装Umbraco时,该任务会阻止安装过程。
我正在尝试通过以下方式检测我的Umbraco网站的状态:
var isApplicationInstalled = uQuery.RootNodeId != -1;
if (isApplicationInstalled)
{
// run the task
}
但是uQuery.RootNodeId
似乎总是返回-1
,并且该任务从未运行。
如何检测到Umbraco网站已安装并且已连接到数据库?
答案 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
}