Я хотел бы прочитать некоторые свойства папок и файлов с сервера sharepoint 2010
.Наиболее важным свойством является UniqueId .Есть ли возможность прочитать это свойство?
Я пытался с CSOM (Microsoft.SharePoint.Client.dll).Это прекрасно работает с кодом ниже для Sharepoint 2013 и выше.Это работает для Sharepoint онлайн и сервера Sharepoint.Проблема для сервера Sharepoint 2010, где мне нужно читать.Возникает исключение, например
Поле или свойство UniqueId недоступно.
ListItemAllFields
также недоступен.Я прочитал много сообщений, но я не мог найти решение.
Я мог бы выяснить, что для него было бы обычно 3 решения:
- csom (было бы лучшим решением и отлично работает на 2013 и выше -> не найдено решение для сервера 2010)
- ssom (Работает только тогда, когда все находится на одном сервере -> не является решением для меня, потому что приложение, которое мне нужно прочитать, не находится натот же сервер, что и sharepoint)
- веб-сервисы (я не смог найти подходящего решения для веб-сервисов)
Я читал о запрос Caml инашел что-то вроде <FieldRef Name='UniqueId'/>
, но я не знаю, как его использовать, и я не знаю, возможно ли с ним чтение UniqueId.
Здесь код, который отлично работает для sharepoint 2013
и выше, ноне работает для sharepoint 2010
сервера:
public string GetChilds(ClientContext clientContext, string relativeUrl)
{
SpFolder folder =clientContext.Web.GetFolderByServerRelativeUrl(relativeUrl);
clientContext.Load(folder,
item => item.Name,
item => item.UniqueId,
item => item.ServerRelativeUrl
);
clientContext.Load(folder.Folders,
items => items.Include(
item => item.Name,
item => item.UniqueId,
item => item.ServerRelativeUrl,
item => item.TimeLastModified,
item => item.TimeCreated,
item => item.ListItemAllFields["Author"],
item => item.ListItemAllFields["Editor"]));
clientContext.Load(folder.Files,
items => items.Include(
item => item.Name,
item => item.UniqueId,
item => item.ServerRelativeUrl,
item => item.TimeLastModified,
item => item.TimeCreated,
item => item.ListItemAllFields["Author"],
item => item.ListItemAllFields["Editor"],
item => item.ListItemAllFields["File_x0020_Size"]));
clientContext.ExecuteQueryWithIncrementalRetry(EXECUTEQUERY_RETRYCOUNT, EXECUTEQUERY_DELAY);
string result = "";
result += "Parent Name:" + folder.Name + ",";
result += "Parent UniqeId:" + folder.UniqueId.ToString() + ",";
result += "Parent ServerRelativeUrl:" + folder.ServerRelativeUrl + ",";
if (folder.Folders != null)
{
foreach (SpFolder subFolder in folder.Folders)
{
result += "Name:" + subFolder.Name + ",";
result += "UniqueId:" + subFolder.UniqueId.ToString() + ",";
//...
}
}
if (folder.Files != null)
{
foreach (SpFile file in folder.Files)
{
result += "Name:" + file.Name + ",";
result += "UniqueId:" + file.UniqueId.ToString() + ",";
//...
}
}
return result;
}
Ожидаемым результатом будет получение UniqueId
и ListItemAllFields
с сервера Sharepoint 2010.Фактический результат:
Поле или свойство UniqueId недоступно