WSS GetListItems在使用GUID调用时没有返回没有继承权限的文件夹

时间:2009-10-29 23:53:13

标签: sharepoint moss wss wss-3.0 caml

WSS 3.0列表服务

我正在使用以下CAML查询在图片库(名称图片)上运行 GetListItems()

<Query>
</Query>
<ViewFields>
  <FieldRef Name="EncodedAbsUrl"/>
  <FieldRef Name="Title"/>
  <FieldRef Name="ContentType"/>
</ViewFields>
<QueryOptions>
  <Folder>Pictures\Uploads</Folder>
  <ViewAttributes Scope="RecursiveAll"/>
</QueryOptions>

此查询正确返回Uploads文件夹中的所有文件和文件夹。

但是,如果我导航到Uploads文件夹并在Uploads文件夹中选择编辑权限,则选择操作&gt; 修改权限,然后点击确认框中的确定,此查询不再有效。

我不相信这与权限有关,因为我根本没有修改权限我只是从父级“cop [ied]权限,然后停止[ped]继承权限”,选择编辑权限即可。另外,运行此查询时我没有收到错误消息,我只是得到一个空的结果集。

我尝试过的其他事情:

  • 删除QueryOptions中的所有代码:这仍然不会返回Uploads文件夹或其下的任何文件或文件夹
  • 直接向我的用户帐户的文件夹添加权限:这没有帮助
  • 搜索具有类似问题或某种解决方案的内容:无效

其他信息:

  • 从C#Win Form App调用此

有谁知道如何修复或解决这个问题?如果需要更多细节或说明,请告诉我。

因此,经过一些实验,找到了一个解决方案,但没有得到很好的解释或记录。问题与如何调用 GetListItems 函数有关,这里是无法正常工作的代码:

System.Xml.XmlNode ndListView = listProxy.GetListAndView("Pictures", "");
string strListID = ndListView.ChildNodes[0].Attributes["Name"].Value;
XmlNode returnNode = listProxy.GetListItems(strListID, strViewID, queryNode, viewNode, _maxFolders, optionNode, null);

对于上面解释的情况,这没有按预期工作,但是,它适用于所有其他文件夹和文件。解决方案是发送 GetListItems 列表名称“图片”而不是列表GUID,如下所示:

XmlNode returnNode = listProxy.GetListItems("Pictures", strViewID, queryNode, viewNode, _maxFolders, optionNode, null);

更新
此外,MSDN documentation建议在使用Lists.GetListItem方法时使用GUID而不是列表名称:

  

listName :包含其中一个的字符串   显示名称或GUID   名单。建议您使用   GUID,必须被包围   大括号 ({})。在查询时   UserInfo表,该字符串包含   “的UserInfo”。

我不知道为什么这段代码有效,原来没有。虽然我的问题已经解决,但有没有人知道为什么我的原始代码不起作用(仅针对上面解释的情况)和修改过的代码有效?

1 个答案:

答案 0 :(得分:0)

因此,经过一些实验,找到了一个解决方案,但没有得到很好的解释或记录。问题与如何调用 GetListItems 函数有关,这里是无法正常工作的代码:

System.Xml.XmlNode ndListView = listProxy.GetListAndView("Pictures", "");
string strListID = ndListView.ChildNodes[0].Attributes["Name"].Value;
XmlNode returnNode = listProxy.GetListItems(strListID, strViewID, queryNode, viewNode, _maxFolders, optionNode, null);

对于上面解释的情况,这没有按预期工作,但是,它适用于所有其他文件夹和文件。解决方案是发送 GetListItems 列表名称“图片”而不是列表GUID,如下所示:

XmlNode returnNode = listProxy.GetListItems("Pictures", strViewID, queryNode, viewNode, _maxFolders, optionNode, null);