Я пишу небольшое приложение, которое ссылается на Umbraco (небольшое автономное консольное приложение, которое в конечном итоге будет запускаться как запланированное задание на сервере), и я используя API Umbraco (4.5.2), чтобы внести изменения в базу данных/документ.Umbraco Document.getProperty (...). Значение выбрасывает исключение ссылки null
Вот фрагмент из того, что я делаю:
IEnumerable<Document> documents = Document.GetChildrenForTree(parentDocumentId);
foreach (Document doc in documents.Where(d => d.Published))
{
doc.getProperty("myData").Value = "some data"; // Exception here
// ...other stuff here...
}
Однако я всегда получаю NullReferenceException, потому что нет никаких свойств. Это меня смущает, потому что я вижу, что в интерфейсе umbraco есть 5 свойств.
Коллега предположил, что я использую узел вместо документа, однако я даже не могу его создать, поскольку получаю исключение NullReferenceException из конструктора класса Node.
Node myNode = new Node(-1); // NullReferenceException here
У кого-нибудь есть идеи?
После разговора с несколькими людьми на конференции DDD Ирландии на прошлой неделе, кажется, что доступ к Umbraco через веб-сервиса является наилучшим способом продвижения вперед на данный момент. Я действительно посмотрел исходный код, и он действительно нуждается в рефакторинге. Существуют зависимости от HttpContext в «бизнес-объектах» (HttpContext должен появляться только на уровне презентации), поэтому он не удался в консольном приложении. Я считаю, что в V5 это будет лучше. (Я не совсем понимаю, что вы подразумеваете под «контекстом umbraco».) –
umbraco context - это одноэлементный, который существует внутри приложения во время выполнения. Это похоже на httpcontext. Он хранит пути xml/storage/другие переменные приложения –