Pregunta

Servicio de lista WSS 3.0

Estoy ejecutando GetListItems () en una biblioteca de imágenes (nombre de imágenes) usando la siguiente consulta CAML:

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

Esta consulta devuelve correctamente todos los archivos y carpetas en la carpeta Cargas.

Sin embargo, si navego a la carpeta Cargas y selecciono Editar permisos en la carpeta Cargas, luego selecciono Acciones > Editar permisos y luego haga clic en Aceptar en el cuadro de confirmación, esta consulta ya no funciona.

No creo que esto esté relacionado con los permisos, porque no modifiqué los permisos, simplemente copié los permisos del padre y luego detuve [ped] los permisos heredados, y # 8221; seleccionando Editar permisos . Además, no recibo un mensaje de error al ejecutar esta consulta, solo recibo un conjunto de resultados vacío.

Otras cosas que he probado:

  • Eliminando todas las etiquetas en QueryOptions: Esto todavía no devuelve la carpeta Subidas ni ningún archivo o carpeta debajo de ella
  • Agregar permisos directamente a la carpeta de mi cuenta de usuario: esto no ayuda
  • Buscando algo con un problema similar o algún tipo de solución: sin resultado

Otra información:

  • Llamar a esto desde la aplicación C # Win Form

¿Alguien sabe cómo solucionar o solucionar esto? Si necesita más detalles o aclaraciones, hágamelo saber.

Entonces, después de experimentar un poco más, se encontró una solución, aunque no estaba bien explicada o documentada. El problema estaba relacionado con cómo se llamaba a la función GetListItems , aquí está el código que no funcionaba correctamente:

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

Esto no funcionaba como se esperaba para la situación explicada anteriormente, sin embargo, funcionaba para cualquier otra carpeta y archivo. La solución fue enviar GetListItems el nombre de la lista, " Imágenes " en lugar del GUID de la lista, así:

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

Actualizar
Además, la documentación de MSDN recomienda el uso de GUID. del nombre de la lista cuando se usa el método Lists.GetListItem:

  

listName : una cadena que contiene   el nombre para mostrar o el GUID para   lista. Se recomienda que use   el GUID, que debe estar rodeado por   llaves ({}). Al consultar el   Tabla UserInfo, la cadena contiene   " Información de usuario " ;.

No sé por qué funciona este código y el original no. Aunque mi problema se ha resuelto, ¿alguien tiene idea de por qué mi código original no funciona (solo para la situación explicada anteriormente) y el código modificado funciona?

¿Fue útil?

Solución

Entonces, después de experimentar un poco más, se encontró una solución, aunque no estaba bien explicada o documentada. El problema estaba relacionado con cómo se llamaba a la función GetListItems , aquí está el código que no funcionaba correctamente:

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

Esto no funcionaba como se esperaba para la situación explicada anteriormente, sin embargo, funcionaba para cualquier otra carpeta y archivo. La solución fue enviar GetListItems el nombre de la lista, " Imágenes " en lugar del GUID de la lista, así:

XmlNode returnNode = listProxy.GetListItems("Pictures", strViewID, queryNode, viewNode, _maxFolders, optionNode, null);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top