У меня возникла проблема с Glass Mapper в моем текущем проекте, с которым я не сталкивался раньше.
Непосредственно после того, как Sitecore был инициализирован, свойство Database
в моем GlassContext (ISitecoreContext
) равно null.База данных контекста стекла null
// After Sitecore initialization, sometimes the glass context database is not initialized yet.
if (this.glassContext == null || this.glassContext.Database == null)
{
this.glassContext = DependencyInjection.Container.Resolve<ISitecoreContext>();
// Now I have a valid this.glassContext.Database ...
}
Когда я спрашиваю мою базу DI (Виндзор, поэтому по умолчанию Glass') для экземпляра, он возвращает мне один с действительным свойством базы данных.
В настоящее время я делаю эту проверку до получения каких-либо предметов, и ей нужна эта проверка только один раз (после этого это хорошо до следующей инициализации), но очень хотелось бы знать, что вызывает это.
Наверное, интересно знать: все запросы предметов (получение предметов, предметов литья и т. Д.) Выполняются через одну службу, которая получает в своем конструкторе ISitecoreContext
.
ItemService
имеет образ жизни Singleton, то ISitecoreContext
имеет образ жизни Transient
Я обнаружил, что моя служба была инициализирована очень рано, потому что она используется в LinkProvider, а Sitecore вызывает это при инициализации HttpRequestArgs. –