0

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 文件夹上选择Edit Permissions,然后选择Actions > Edit Permissions,然后在确认框中单击OK,则此查询不再有效。

我不相信这与权限有关,因为我根本没有修改权限,我只是通过选择Edit Permissions来“从父级复制 [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文档建议在使用 Lists.GetListItem 方法时使用 GUID 而不是列表名称:

listName:包含列表的显示名称或 GUID 的字符串。建议您使用 GUID,它必须用大括号 ({}) 括起来。查询 UserInfo 表时,字符串中包含“UserInfo”。

我不知道为什么这段代码有效而原始代码无效。虽然我的问题已经解决,但有没有人知道为什么我的原始代码不起作用(仅适用于上述情况)而修改后的代码起作用?

4

1 回答 1

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);
于 2009-10-30T15:50:06.650 回答