获取所有NodieIds或所有NodeAliasPaths API 7的最佳方法

时间:2016-01-28 14:09:21

标签: c# kentico

我将NodeIds(其中22,000个)收集到List并将它们传递给

tree.SelectSingleNode(NodeID) // Kentico API7

我是否使用

tree.SelectSingleNode(NodeID) 

或其等同于NodeAliasPath

tree.SelectSingleNode(CMSContext.CurrentSiteName, aliaspath, culture) 

同时返回一个允许操作Node数据的节点,我得到了一个 两行都有内存错误:

tree.SelectSingleNode(NodeID) 

tree.SelectSingleNode(CMSContext.CurrentSiteName, aliaspath, culture)

错误消息是由于代码还是环境造成的?

以下是错误消息:

  

托管调试助手'FatalExecutionEngineError'在'C:\ Users \ xxxxxxx \ Documents \ Visual Studio 2013 \ Projects \ ConsoleApplication4 \ ConsoleApplication4 \ bin \ Debug \ ConsoleApplication4.vshost.exe'中检测到问题。

     

其他信息:运行时遇到致命错误。错误的地址是0x005228e7,位于线程0x5330。错误代码是0x80131623。此错误可能是CLR中的错误,也可能是用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会破坏堆栈。

1 个答案:

答案 0 :(得分:2)

您似乎正确获取信息。问题是,当将所有数据存储在内存中时,您只是拥有太多节点并且内存不足。我要做的就是获取数据并分批处理。如果您正在运行多租户环境,则还可以在where子句中指定SiteID。您还可以指定要接收或修改的列,这也有助于您返回的数据量。