WSS GetListItems Nicht Ordner ohne geerbte Berechtigungen zurückkehrend, wenn sie mit GUID aufrufen

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

Frage

WSS 3.0 Liste Dienst

Ich bin mit GetListItems () auf einer Bildbibliothek (Name Pictures) mit der Folge CAML-Abfrage:

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

Diese Abfrage liefert korrekt alle Dateien und Ordner in dem Ordner Uploads.

Wenn ich jedoch auf die Uploads Ordner und wählen Sie Berechtigungen bearbeiten auf den Uploads Ordner und wählen Sie Aktionen > Berechtigungen bearbeiten und klicken Sie dann auf OK auf dem Bestätigungsfeld diese Abfrage nicht mehr funktioniert.

Ich glaube nicht, wird dies zu Berechtigungen im Zusammenhang, weil ich nicht die Berechtigungen auf alles, was ich nur ändern hat „cop [ied] Berechtigungen von übergeordneten und stoppen dann [ped] erben Berechtigungen“, indem Sie auf Berechtigungen bearbeiten . Darüber hinaus Ich eine Fehlermeldung nicht erhalten, wenn diese Abfrage ausgeführt wird, Ich bekomme nur eine leere Ergebnismenge.

Andere Dinge, die ich versucht habe:

  • Entfernen aller Tags in QueryOptions: Das zurückkehrt noch nicht den Uploads Ordner oder eine Datei oder einen Ordner darunter
  • Berechtigungen direkt in den Ordner für mein Benutzerkonto hinzu: Dies hilft nicht
  • Die Suche nach etwas mit einem ähnlichen Problem oder irgendeine Art von Lösung: ohne Erfolg

Weitere Informationen:

  • Aufruf dieser von C # Win Form App

Wer weiß, wie um dies zu beheben oder zu arbeiten? Wenn mehr Details oder Klärung notwendig ist, lassen Sie es mich wissen.

So, nachdem einige weiteres Experimentieren wurde eine Lösung gefunden, wenn auch nicht gut erklärt oder dokumentiert. Das Problem wurde im Zusammenhang, wie die GetListItems Funktion aufgerufen wurde, hier ist der Code, der nicht richtig funktioniert:

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

Dies war nicht funktioniert, wie für die Situation zu erwarten oben erläutert, aber es war für jeden anderen Ordner und Dateien zu arbeiten. Die Lösung wurde schicken GetListItems den Namen der Liste, "Bilder" anstelle der Liste GUID, etwa so:

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

Aktualisieren
Außerdem MSDN Dokumentation empfiehlt die Verwendung von GUID statt die Listennamen bei Verwendung der Lists.GetListItem Methode:

  

Listenname : Ein String, enthält entweder   der Anzeigename oder die GUID für die   Liste. Es wird empfohlen, dass Sie verwenden   die GUID, die von umgeben sein muss   Geschweifte Klammern ({}). Beim Abfragen der   Userinfotabelle enthält die Zeichenfolge   "Userinfo".

Ich weiß nicht, warum dieser Code funktioniert und das Original nicht. Obwohl mein Problem gelöst ist, hat jemand eine Ahnung, warum mein Original-Code nicht funktioniert (nur für die Situation, die oben erklärt) und den geänderten Code Arbeit?

War es hilfreich?

Lösung

So, nachdem einige weiteres Experimentieren wurde eine Lösung gefunden, wenn auch nicht gut erklärt oder dokumentiert. Das Problem wurde im Zusammenhang, wie die GetListItems Funktion aufgerufen wurde, hier ist der Code, der nicht richtig funktioniert:

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

Dies war nicht funktioniert, wie für die Situation zu erwarten oben erläutert, aber es war für jeden anderen Ordner und Dateien zu arbeiten. Die Lösung wurde schicken GetListItems den Namen der Liste, "Bilder" anstelle der Liste GUID, etwa so:

XmlNode returnNode = listProxy.GetListItems("Pictures", strViewID, queryNode, viewNode, _maxFolders, optionNode, null);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top