2009-08-12 5 views
1

Gibt es einen MOSS Out-of-the-Box-Webdienst, der die URL einer SharePoint-Website annimmt und uns mitteilt, ob diese URL auf a verweist Datei (Dokument)? Zum Beispiel haben wir eine Liste von SharePoint-URLs und müssen herausfinden, welche URLs auf eine Datei verweisen und nicht auf eine Dokumentenbibliothek oder eine Liste?Finden Sie heraus, ob eine SharePoint-URL eine Datei ist oder nicht - MOSS Out-of-the-Box-Webdienst

+1

@Stranger: Ihre Frage wurde wahrscheinlich nicht angezeigt, da sie nicht gut getaggt wurde. Bitte stellen Sie sicher, dass alle SharePoint-Fragen mit 'sharepoint' markiert sind. Bitte hinterlassen Sie keine Kommentare als Antworten. Bearbeiten Sie Ihre Frage, um sie an den Anfang der Liste "Aktiv" zu bringen. –

Antwort

0

Ich würde ernsthaft in Betracht ziehen mit propfind (webdav) gehen. Ich kann Ihnen keine genaue Antwort darauf geben, wie man nach einer Datei oder Dokumentbibliothek oder Liste sucht, aber ich kann eine Funktion posten, die als Basis für etwas dienen kann, das Sie implementieren könnten ... hier ist es ....

/// <summary> 
     /// Checks if MOSS resource exists. 
     /// </summary> 
     /// <param name="url"> 
     /// The url to the resource. 
     /// </param> 
     /// <returns> 
     /// True or false. 
     /// </returns> 
     /// <exception cref="Exception"> 
     /// </exception> 
     private bool MossResourceExists(string url) 
     { 
      // Create the web request object 
      var oReq = (HttpWebRequest) WebRequest.Create(url); 

      // Set the needed properties 
      oReq.Method = "PROPFIND"; 
      oReq.Credentials = wsLists.Credentials; // Use same credentials as wsLists. 
      oReq.AllowAutoRedirect = true; 
      oReq.UserAgent = "Microsoft-WebDAV-MiniRedir/6.1.7600"; 

      try 
      { 
       // Enumerate through top level only, increasing the depth will find children. 
       oReq.Headers["Depth"] = "0"; 
       oReq.Headers["translate"] = "f"; 
       var oRequest = new StreamWriter(oReq.GetRequestStream()); 
       oRequest.WriteLine(); 
       oRequest.Close(); 
       oReq.GetResponse(); 
       ////done with the webclient stuff, check the results 

       //var oMyDoc = new XmlDocument(); 
       //oMyDoc.LoadXml(sResponse); 
       //var oNsMgr = new XmlNamespaceManager(oMyDoc.NameTable); 
       //oNsMgr.AddNamespace("D", "DAV:"); 

       //XmlNodeList oAllResponses = oMyDoc.SelectNodes(".//D:multistatus/D:response", oNsMgr); 

       //foreach (XmlNode oNode in oAllResponses) 
       //{ 
       // if() 
       // string oNodeURL = oNode.SelectSingleNode("./D:href", oNsMgr).InnerText.ToLower() 
       // Console.WriteLine("Name: " + 
       //      oNode.SelectSingleNode("./D:propstat/D:prop/D:displayname", 
       //      oNsMgr).InnerText); 

       // if (oNode.SelectNodes("./D:propstat/D:prop/D:isFolder", oNsMgr).Count > 0) 
       // { 
       //  Console.WriteLine("Is folder: " + 
       //    oNode.SelectSingleNode("./D:propstat/D:prop/D:isFolder", 
       //    oNsMgr).InnerText); 
       // } 
       // else 
       // { 
       //  Console.WriteLine("Is folder: f"); 
       // } 
       // Console.WriteLine(); 
       //} 
      } 
      catch (WebException ex) 
      { 
       var errorResponse = ex.Response as HttpWebResponse; 

       if (errorResponse != null) 
        if (errorResponse.StatusCode == HttpStatusCode.NotFound) 
        { 
         return false; 
        } 
        else 
        { 
         throw new Exception("Error checking if URL exists:" + url + ";Status Code:" + 
              errorResponse.StatusCode + ";Error Message:" + ex.Message); 
        } 
      } 
      return true; 
} 
Verwandte Themen