Pergunta

WSS 3.0 Service List

Estou executando o GetListItems () em uma biblioteca de imagens (nome Pictures) usando a consulta follow 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 retorna corretamente todos os arquivos e pastas na pasta Uploads.

No entanto, se eu navegar para os Uploads pasta e selecione Editar permissões nas Uploads pasta e selecione Ações > Editar permissões e clique em OK na caixa de confirmação desta consulta funciona por mais tempo.

Eu não acredito que isto está relacionado com as permissões, porque eu não modificar as permissões em tudo eu só “cop [IED] permissões do pai, e depois parar [PED] permissões herdando”, selecionando a opção Editar permissões . Além disso, Eu não recebo uma mensagem de erro ao executar esta consulta, Acabei de receber um conjunto de resultados vazio.

Outras coisas que eu tentei:

  • Remover todas as tags em queryOptions: Isso ainda não retorna a pasta Uploads ou qualquer arquivo ou pasta sob ele
  • A adição de permissões diretamente para a pasta para a minha conta de usuário: isso não ajuda
  • Procurando por algo com um problema semelhante ou algum tipo de solução: nenhum proveito

Outras informações:

  • Chamar esse de C # Win Form App

Alguém sabe como resolver ou contornar esse? Se mais detalhes ou esclarecimento é necessário por favor me avise.

Assim, depois de mais alguns experimentos, foi encontrada uma solução, embora não bem explicado ou documentados. O problema estava relacionado à forma como o GetListItems função estava sendo chamado, aqui está o código que não estava funcionando corretamente:

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

Esta não estava funcionando como esperado para a situação explicado acima, no entanto, ele estava trabalhando para todas as outras pastas e arquivos. A solução foi enviar GetListItems O nome da lista, "Pictures" em vez de lista GUID, assim:

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

Atualizar
Além disso, MSDN documentação recomenda o uso de GUID em vez do nome da lista quando se utiliza o método Lists.GetListItem:

listName : Uma cadeia que contém qualquer o nome de exibição ou o GUID para o Lista. Recomenda-se que você usa o GUID, que deve ser cercada por chavetas ({}). Ao consultar o UserInfo mesa, a cadeia contém "UserInfo".

Eu não sei por que esse código funciona eo original não. Embora o meu problema foi resolvido, alguém tem uma pista por que meu código original não funciona (apenas para a situação explicado acima) eo trabalho código modificado?

Foi útil?

Solução

Assim, depois de mais alguns experimentos, foi encontrada uma solução, embora não bem explicado ou documentados. O problema estava relacionado à forma como o GetListItems função estava sendo chamado, aqui está o código que não estava funcionando corretamente:

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

Esta não estava funcionando como esperado para a situação explicado acima, no entanto, ele estava trabalhando para todas as outras pastas e arquivos. A solução foi enviar GetListItems O nome da lista, "Pictures" em vez de lista GUID, assim:

XmlNode returnNode = listProxy.GetListItems("Pictures", strViewID, queryNode, viewNode, _maxFolders, optionNode, null);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top