WSS GetListItems ne renvoyant pas de dossiers sans autorisations héritées lors d'un appel avec un GUID

StackOverflow https://stackoverflow.com/questions/1647242

Question

Service de liste WSS 3.0

J'exécute GetListItems () sur une bibliothèque d'images (nom Images) à l'aide de la requête CAML suivante:

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

Cette requête renvoie correctement tous les fichiers et dossiers du dossier Uploads.

Toutefois, si je navigue dans le dossier Uploads et que je sélectionne Modifier les autorisations dans le dossier Uploads, je sélectionne ensuite Actions > Modifier les autorisations , puis cliquez sur OK dans la case de confirmation. Cette requête ne fonctionne plus.

Je ne crois pas que cela soit lié aux autorisations, car je ne les ai pas du tout modifiées. Je viens de "copier les autorisations du parent, puis d'arrêter les autorisations héritées", en sélectionnant Modifier les autorisations. . De plus, je ne reçois pas de message d'erreur lors de l'exécution de cette requête, je viens d'obtenir un jeu de résultats vide.

Autres choses que j'ai essayées:

  • Suppression de toutes les balises dans QueryOptions: cela ne renvoie toujours pas le dossier Uploads ni aucun fichier ou dossier en dessous
  • Ajout d'autorisations directement dans le dossier de mon compte d'utilisateur: cela n'aide pas
  • Rechercher un problème similaire ou une solution: Inutile

Autres informations:

  • Appel de cette application à partir de l'application C # Win Form

Est-ce que quelqu'un sait comment résoudre ce problème? Si des précisions ou des éclaircissements sont nécessaires, merci de me le faire savoir.

Ainsi, après quelques expériences supplémentaires, une solution a été trouvée, bien que mal expliquée ou documentée. Le problème était lié à l'appel de la fonction GetListItems , voici le code qui ne fonctionnait pas correctement:

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);

Cela ne fonctionnait pas comme prévu pour la situation décrite ci-dessus. Cependant, cela fonctionnait pour tous les autres dossiers et fichiers. La solution consistait à envoyer à GetListItems le nom de la liste, " Images " au lieu de la liste GUID, comme suit:

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

Mettre à jour
De plus, la documentation de MSDN recommande l'utilisation du GUID. du nom de la liste lors de l'utilisation de la méthode Lists.GetListItem:

  

listName : chaîne contenant soit   le nom d'affichage ou le GUID du   liste. Il est recommandé d'utiliser   le GUID, qui doit être entouré de   accolades ({}). En interrogeant le   Table UserInfo, la chaîne contient   "UserInfo".

Je ne sais pas pourquoi ce code fonctionne et l’original ne le fait pas. Bien que mon problème ait été résolu, quelqu’un at-il une idée de la raison pour laquelle mon code original ne fonctionne pas (uniquement pour la situation décrite ci-dessus) et que le code modifié fonctionne?

Était-ce utile?

La solution

Ainsi, après quelques expériences supplémentaires, une solution a été trouvée, bien que mal expliquée ou documentée. Le problème était lié à l'appel de la fonction GetListItems , voici le code qui ne fonctionnait pas correctement:

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);

Cela ne fonctionnait pas comme prévu pour la situation décrite ci-dessus. Cependant, cela fonctionnait pour tous les autres dossiers et fichiers. La solution consistait à envoyer à GetListItems le nom de la liste, " Images " au lieu de la liste GUID, comme suit:

XmlNode returnNode = listProxy.GetListItems("Pictures", strViewID, queryNode, viewNode, _maxFolders, optionNode, null);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top