Durante la creazione di un web service per il prelievo di alcuni dati da sharepoint, mi sono imbattuto in questo errore:

"Cannot connect to the configuration database."

Mi sono accorto che questo errore veniva ritornato semplicemente cercando di creare un nuovo oggetto di tipo SPSite. Cerco su google e mi imbatto in questo documento microsoft:
http://support.microsoft.com/?id=823287.
Ecco cosa dice di controllare quel documento:

  • che sql server sia attivo
  • che IIS non stia girando in "isolation mode"
  • che l'application pool del sito IIS giri con un account che abbia permessi sul database di sharepoint
Controllo tutto quanto, faccio un IISRESET per sicurezza e faccio ripartire la richiesta al mio web service.
Non ci crederete ... ancora un errore:

"Access denied."

Eppure sono convinto che l'utenza con cui ho deciso di far girare l'application pool ha diritti anche sul database !
Volete sapere qual'era l'inghippo ?
Nelle proprietà del sito IIS va specificata l'autenticazione integrata, e va disabilitato l'accesso anonimo. E nel web.config del web service va aggiunta l'impersonation:

<identity impersonate="true" />

In questo modo il web service effettua una richiesta al database di Sharepoint con l'utenza con cui gira l'application pool, utenza da voi scelta, con i giusti permessi per l'accesso a Sql Server.
In questo modo è possibile esporre dal proprio server dei web service che forniscano informazioni sul contenuto dei vostri siti sharepoint, senza dover essere legati dall'utilizzo dei web service esposti da sharepoint stesso.