Запрос CAML не работает в веб-службе ASP.NET

У меня есть веб-служба ASP.NET, внутри которой я использую клиентскую объектную модель SharePoint 2010. Проблема в том, что я использую CAML Query для получения некоторых заданных элементов для пользователя. Когда я выбираю, чтобы мое приложение использовало сервер разработки Visual Studio, все работает правильно, но когда я переключаюсь на локальный веб-сервер IIS, CAML возвращает 0 элементов, что бы то ни было.

        ClientContext clientContext = new ClientContext("http://mySiteCol");

        Web web = clientContext.Web;

        var query = from list in web.Lists
                    where list.Title == "listName"
                    select list;

        var result = clientContext.LoadQuery(query);
        clientContext.ExecuteQuery();

        List lista = result.ToList().FirstOrDefault();

        CamlQuery camlQuery = new CamlQuery();
        camlQuery.ViewXml = string.Format("<View><Query><Where>" +
                             "<Eq><FieldRef Name='staticColumnName' />" + 
                             "<Value Type='User'>{0}</Value></Eq>" + 
                             "</Where></Query></View>", userName);

        ListItemCollection listItemCollection = lista.GetItems(camlQuery);

        clientContext.Load(listItemCollection);
        clientContext.ExecuteQuery();

CAML также не работает с идентификатором пользователя.

Спасибо.


person cotoarba bogdan    schedule 17.09.2013    source источник
comment
Прошло несколько лет с тех пор, как я начал работать с SharePoint, но я помню, что некоторые вещи должны были запускаться локально на установке SharePoint (физическом сервере) для работы. Когда вы запускаете его с помощью Visual Studio Development Server, подключается ли он к локальному экземпляру SharePoint?   -  person Garrison Neely    schedule 17.09.2013
comment
да. Это единственный способ, которым это работает. Проблема заключается в использовании веб-сервера IIS. Он получает список, но CAML не возвращает результатов.   -  person cotoarba bogdan    schedule 18.09.2013
comment
Получил проблему. Мой пул приложений работал с пользователем пула приложений по умолчанию, у которого не было разрешений в SharePoint. Итак, я заставил его работать с моим пользователем, и все было решено.   -  person cotoarba bogdan    schedule 18.09.2013
comment
Я предлагаю изложить это как ответ для будущих искателей.   -  person Garrison Neely    schedule 18.09.2013


Ответы (2)


Вы смотрели разрешения? Вероятно, вызовы вашего веб-сервиса в SharePoint при работе в IIS выполняются как учетная запись AppPool.

person pateketu    schedule 18.09.2013

Вы пытались удалить

<View><Query></Query></View>

?

Я имею в виду вот так:

string.Format("<Where>" +
              "<Eq><FieldRef Name='staticColumnName' />" + 
              "<Value Type='User'>{0}</Value></Eq>" + 
              "</Where>", userName);

Надеюсь это поможет.

person kml    schedule 18.09.2013