Как создать экземпляр объекта SPWeb из консольного приложения? - PullRequest
3 голосов
/ 14 ноября 2008

Я пытаюсь написать консольное приложение, которое просто перечисляет количество списков в корневом каталоге sharepoint.

Я попытался сделать это, используя следующий код, но объект SPContext.Current имеет значение null. Есть идеи, как получить веб-объект?

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

Ответы [ 3 ]

9 голосов
/ 14 ноября 2008

Просто добавив кое-что к посту Ната:
Даже если это не так важно, как в SharePoint WebApp, все равно рекомендуется удалить все объекты SPWeb и SPSite.
Поэтому сохраняйте хорошие привычки:

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

Примечание: вы можете напрямую передать weburl конструктору SPSite, так что OpenWeb откроет данную сеть.

4 голосов
/ 14 ноября 2008
SPSite spSite = new SPSite("http://myurl");
SPWeb spMySite = spSite.Allwebs["mysite"];
SPWeb spRootsite = spsite.RootWeb;

Консольное приложение будет работать на сервере только в обычном режиме. Кроме того, используемый URL http://myurl может быть ссылкой на страницу, и будет создан объект SPSite. Например. http://myurl/mysite/pages/default.aspx получит действительный объект SPSite.

0 голосов
/ 14 ноября 2008

Есть несколько других способов использования SPSite.OpenWeb (), а также ...

Если вы отслеживаете GUID объекта SPWeb:

site.OpenWeb(webUid);

Использование веб-сервера или сайта относительно URL или заголовка, см. MSDN SPSite.OpenWeb (строка) для получения более подробной информации:

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

Используя точный относительный URL и избегая всяких хитрых вещей, которые использует SPSite.OpenWeb (string):

site.OpenWeb(relativeUrl, true);
...