Domanda

Sto cercando di scrivere un'app console che elenca semplicemente il numero di elenchi nella radice sharepoint.

Ho provato a farlo utilizzando il seguente codice, ma l'oggetto SPContext.Current è nullo. Qualche idea su come ottenere l'oggetto web?

 SPWeb web = SPContext.Current.Site.OpenWeb("http://localhost") ;
È stato utile?

Soluzione

SPSite spSite = new SPSite("http://myurl");
SPWeb spMySite = spSite.Allwebs["mysite"];
SPWeb spRootsite = spsite.RootWeb;

L'app della console verrà eseguita sul server solo come al solito. Inoltre, l'URL utilizzato http: // myurl può essere un URL a una pagina e verrà creato un oggetto SPSite. Per esempio. http: //myurl/mysite/pages/default.aspx otterrà un oggetto SPSite valido.

Altri suggerimenti

Basta aggiungere una piccola cosa al post di Nat:
Anche se non è importante come in una WebApp di SharePoint, si consiglia comunque di eliminare tutti gli oggetti SPWeb e SPSite.
Quindi mantieni le buone abitudini:

using (SPSite site = new SPSite(weburl))
{
    using (SPWeb web = site.OpenWeb())
    {
        // bla bla
    }
}

Nota: puoi passare direttamente il weburl al costruttore SPSite, quindi OpenWeb aprirà il web dato.

Ci sono un paio di altri modi in cui puoi usare SPSite.OpenWeb () ...

Se si tiene traccia del GUID dell'oggetto SPWeb:

site.OpenWeb(webUid);

Utilizzando l'URL o il titolo relativo al server o al sito Web, vedere MSDN SPSite. OpenWeb (stringa) per maggiori dettagli:

site.OpenWeb(relativeUrl);
site.OpenWeb(title);

Usando l'URL relativo preciso ed evitando qualsiasi cosa intelligente che SPSite.OpenWeb (stringa) usa:

site.OpenWeb(relativeUrl, true);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top