2017-03-20 2 views
0

Mein besonderes Problem ist, dass ich URLs in folgendem Format am gegeben:Ist es möglich, mehrere Listen mit CSOM in einer SharePoint-Site abzufragen?

https://sharepoint.business.com/sites/SHAREPOINT/_layouts/15/DocIdRedir.aspx?ID=SHAREPOINT-823645913-12

Es gibt keine Möglichkeit, Dokumentdaten, die Art der Verbindung verwenden, ohne vorher deren Umwandlung zu einem Server absoluten Dateipfad direkt abrufen zum Beispiel:

https://sharepoint.business.com/sites/SHAREPOINT/Documents/TestDocument.pdf

von der angegebenen URL, habe ich keinen Hinweis darauf, welche Liste ich meine einzige Lösung das eigentliche Dokument in, so zur Zeit finden, ist alle Listen in einer Schleife abgefragt werden, die wirklich scheint schlecht und inef ficient.

Gibt es eine einfache/elegante Möglichkeit, alle Daten innerhalb der gesamten SharePoint-Website mit der eindeutigen Dokument-ID abzufragen?

Aktuelle Pseudo-Code:

ListCollection lists = SharePoint.Client.Web.Lists; 

ctx.Load(lists); 

ctx.ExecuteQuery(); 

Loop at all lists { 
    Use CAML query to grab absolute file path from Document ID. 
} 

Retrieve individual file that I actually want, using GetFileByServerRelativeUrl API method. 

Vielen Dank im Voraus, und lassen Sie mich wissen, ob ich etwas klären müssen.

Antwort

1

Ja, mithilfe der Such-API können Sie das gesamte Web oder die Websitesammlung durchsuchen.

using Microsoft.SharePoint.Client.Search; 
using Microsoft.SharePoint.Client.Search.Query; 

string documentId = "SHAREPOINT-823645913-12"; 
KeywordQuery kQry = new KeywordQuery(clientContext); 
kQry.QueryText = "DocId:" + documentId; 
SearchExecutor searchExec = new SearchExecutor(clientContext); 
ClientReuslt<ResultTableCollection> results = searchExec.ExecuteQuery(kQry); 
clientContext.ExecuteQuery(); 

foreach(var result in results.Value[0].ResultRows) 
{ 
    //do stuff with result which contains the URL property for the document 
    //along with any other crawled attribtues 
} 
+0

Danke @Maarten, das funktioniert. Es ist jedoch erwähnenswert, dass ich die Authentifizierung, die ich (in meinem spezifischen Szenario) verwendete, ändern musste, damit der Server keine Such-API-Anfragen zurückwies. –

+0

Awesome, ich bin froh, dass es funktioniert :) Auch wenn Sie es ein wenig für Ihre spezifischen Authentifizierungsanforderungen zwicken mussten – Maarten

Verwandte Themen