Umbraco Document.getProperty(...)。值抛出Null Reference Exception

时间:2010-10-06 15:07:12

标签: console-application umbraco

我正在编写一个小应用程序链接到Umbraco(一个小型​​独立控制台应用程序,最终将作为服务器上的计划任务运行)并且我正在使用Umbraco API(4.5.2)进行更改数据库/文件。

以下是我正在做的事情的片段:

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个属性。

一位同事建议我使用Node而不是文档,但是当我从Node类构造函数中获取NullReferenceException时,我甚至无法创建一个。

Node myNode = new Node(-1); // NullReferenceException here

有没有人有任何想法?

3 个答案:

答案 0 :(得分:2)

文档类从umbraco数据库获取/设置信息。由于您在带外控制台应用程序中运行代码,因此无法找到umbraco上下文。因此抛出空引用异常。

您需要在umbraco进程中运行代码。存在用于第三方集成的asmx webservice。 /umbraco/webservices/api/documentservice.asmx

答案 1 :(得分:0)

实现这一目标的另一种方法是使用linq2umbraco。 有关详细信息,请参阅http://our.umbraco.org/forum/core/41-feedback/7699-UmbracoLinq-in-console-app--Having-some-troubles

答案 2 :(得分:0)

我最近检查了4.5.2源代码,发现填充Document和Node对象只需要使用umbracoDbDsn进行连接。因此,如果你有一个名为umbracoDbDsn的AppSetting,它指向一个有效的Umbraco数据库实例,你会很好。

HTH,

本杰明