Как получить типы контента - PullRequest
3 голосов
/ 20 апреля 2010

Я занимаюсь разработкой приложения для Windows, которое общается с SharePoint через встроенные веб-службы, и я хочу получить все типы контента, доступные на сайте SharePoint,

Я пытаюсь использовать

Web.Webs WebsService = new Web.Webs (); WebsService.Credentials = полномочия; WebsService.Url = "URL веб-сервиса"; XmlNode listOfContentTypes = WebsService.GetContentTypes ();

Если учетные данные имеют привилегии администратора, я могу получить список всех доступных типов контента, но если учетные данные не имеют привилегий администратора, выдается исключение 401 (не получено разрешение).

Мой вопрос:
Как я могу получить все типы контента, доступные на сайте SharePoint, если у меня нет прав администратора?

Ответы [ 3 ]

2 голосов
/ 07 августа 2010

Я немного покопался в Reflector, чтобы посмотреть, какие разрешения на самом деле требуются. Проверьте метод ниже, который идет по цепочке вызовов от GetContentTypes() метода обслуживания:

public string GetContentTypeTemplates()
{
    SPWeb web = SPContext.GetContext(HttpContext.Current).Web;
    web.CheckPermissions(SPBasePermissions.EmptyMask | SPBasePermissions.ManageLists);
    web.CheckPermissions(SPBasePermissions.EmptyMask | SPBasePermissions.AddAndCustomizePages);
    return this.GetGeneralContentTypes(web.AvailableContentTypes);
}

Исходя из этого, мы можем заключить, что SharePoint требует, чтобы у вас были права ManageLists и AddAndCustomizePages для извлечения всех типов контента.

Таким образом, одним из решений для вас может быть обеспечение того, чтобы учетная запись клиента имела эти разрешения, возможно, путем создания настраиваемого уровня разрешений или, при работе на сайте публикации, добавление учетной записи в группу «Дизайнеры».

1 голос
/ 22 апреля 2010

Если вы хотите использовать веб-службы OOB, вам потребуется предоставить учетные данные (которые имеют достаточные права) в вызывающем приложении.

        Web.Webs WebService = new Web.Webs();
        WebService.Credentials = new NetworkCredential("username", "password");
        XmlNode list = WebService.GetContentTypes();

Как вы получите эти полномочия, зависит от вас ...

0 голосов
/ 20 апреля 2010

Вы можете написать веб-сервис-оболочку, который вызывает веб-сервис Webs (или даже использовать объектную модель SharePoint) с необходимыми учетными данными. Эта служба оболочки может быть развернута на сервере SharePoint.

Ваше пользовательское приложение может затем вызвать службу оболочки без необходимости предоставления правильных учетных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...