Passaggio all'ora legale 31 marzo 2024 02:00 03:00 sposta avanti l'orologio di 1 ora (si dorme 1 ora in meno)
Recentemente mi è capitato di fare una migrazione da SharePoint 2003 a SharePoint Online ed ho avuto la necessità di accedere a quest'ultimo tramite il Client-Script Object Model.

Il prerequisito necessario per connettersi da remoto è quello di avere sul proprio client lo SharePoint Server 2013 Client Components SDK che installa localmente le DLL di interfacciamento:
  • Microsoft.Sharepoint.Client.dll
  • Microsoft.Sharepoint.Client.Runtime.dll
  • Microsoft.Sharepoint.Client.Publishing.dll
  • Microsoft.Sharepoint.Client.Taxonomy.dll
  • Microsoft.Sharepoint.Client.Userprofiles.dll

Successivamente, bisogna referenziare le DLL in Visual Studio e poi si può iniziare a scrivere il codice.

Un esempio di connessione a SharePoint 2013 OnLine è il seguente dove si vede l'utilizzo della classe SharePointOnlineCredentials per passare le credenziali di accesso:
C#
//http://www.sgart.it
//using Microsoft.SharePoint.Client;
//using Microsoft.SharePoint.Client.Utilities;

string url = "http://sgartit.sharepoint.com";
string user = "utente1";
string pwd  = "utente1pwd";

using (ClientContext ctx = new ClientContext(url)) {

  //preparo le credenziali per la connessione
  System.Security.SecureString secpwd = new System.Security.SecureString();
  for (int i = 0; i < pwd.Length; i++)
  {
    secpwd.AppendChar(pwd[i]);
  }
  SharePointOnlineCredentials creds = new SharePointOnlineCredentials(user, secpwd);
  ctx.Credentials = creds;

  //come esempio leggo le proprietà del web
  Web web = ctx.Web;
  //preparo la richiesta indicando quale oggetto e proprietà voglio leggere
  ctx.Load(web, w => w.Features, w => w.Title, w => w.Url);
  //eseguo la richiesta
  ctx.ExecuteQuery();

  //dopo la richiesta ho le proprietà valorizzate
  Console.WriteLine(web.Title);
}
potrebbe capitare di esse dietro un proxy, in questo caso al codice va aggiunto:
C#
string proxyAddress = "192.168.5.254:8080";

using(ClientContext ctx = new ClientContext(url)){

  System.Net.WebProxy reqProxy = new System.Net.WebProxy(ProxyAddress, true);
  //uso le credenziali dell'utente collegato al pc
  reqProxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
  System.Net.WebRequest.DefaultWebProxy = reqProxy;

 ...
}

Se ho uno SharePoint On-premises per connettermi con la form autenticazione devo usare la classe FormsAuthenticationLoginInfo:
C#
ClientAuthenticationMode = ClientAuthenticationMode.FormsAuthentication;
FormsAuthenticationLoginInfo creds = new FormsAuthenticationLoginInfo(User, Password);
Potrebbe interessarti anche: