我正在尝试查询用户俱乐部的论坛集(论坛?),以获取这些论坛中的最新主题和回复。这是我正在使用的代码:
RoomCollectionCriterion userClubRoomsCollection = new RoomCollectionCriterion();
foreach (Club userClub in userClubCollection)
{
RoomCriterion userClubRoomCriterion = new RoomCriterion();
userClubRoomCriterion.ID = new IntegerCriterion();
userClubRoomCriterion.ID.Value = userClub.ForumRoom.ID;
userClubRoomsCollection.Criteria.Add(userClub.Name, userClubRoomCriterion);
}
TopicQuery topicQuery = new TopicQuery();
topicQuery.Room = new RoomCriterion();
// Pass in our collection of the user's clubs to the query
topicQuery.Room.Rooms = userClubRoomsCollection;
MessageCollection topics = QueryHandler.GetQueryResult<EPiServer.Community.Forum.Topic, MessageCollection>(topicQuery, pageNumber, 2);
MessageCollection replies = QueryHandler.GetQueryResult<EPiServer.Community.Forum.Topic, MessageCollection>(topicQuery, pageNumber, 4);
我遇到的问题是,每次我打第一个电话时GetQueryResult
,我都会得到一个NullReferenceException
. 我看不到我传入的内容有任何错误/遗漏GetQueryResult
,但我希望其他人之前已经这样做过,并且可以建议对此进行修复。
更新 26/10/2010
根据 Magnus 的建议,我换掉了我QueryHandler.GetQueryResult
的电话,ForumHandler.GetQueryResult
但这似乎没有什么不同。我还削减了参数,GetQueryResult
以便我的代码行现在是:
MessageCollection topics = ForumHandler.GetQueryResult(topicQuery);
但这仍然给了我一个 NullReferenceException。这表明问题不在于我正在调用的任何处理程序的 GetQueryResult 方法,而是在topicQuery
对象中,因为这是迄今为止保持不变的东西。我想知道我是否缺少需要在对象上设置的TopicQuery
属性。
2010 年 4 月 11 日更新
这里有需要考虑的“安全上下文”吗?即查询需要在可以完全访问所有论坛的用户的上下文中运行?