У меня есть список URL-адресов, которые являются документами в подпапке библиотеки.
Когда я иду, чтобы обновить метаданные документа в библиотеке, но не в подпапке, код работает как положено.
Но некоторые документы в списке находятся в подпапке. URL имеет полный путь к этому документу, который включает в себя подпапку.
Я могу вставить URL-адрес в браузер и открыть документ, чтобы я знал, что он правильный, но когда я попадаю на
context.Load (file, f.ListItemsAllFields);Context.ExecuteQuery ();- Ошибка происходит по URL-адресу файла в подпапке
Я получаю сообщение об ошибке «Файл не найден».
См. Код ... Опять работает, если файл находится в корне библиотеки, но только некогда файл находится в подпапке.
/// <summary>
/// Updates SharePoint MetaData for a specific document
/// </summary>
/// <param name="urlfilepath">The URL including file name of the file to be updated</param>
/// <param name="values">this is a dictionary of propertyName and value to be updated.</param>
private void UpdateMetaData(string urlfilepath, string library,Dictionary<string, string> mydictionary)
{
using (var context = new ClientContext(qsURLSite))
{
context.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
var web = context.Web;
// Get drop off library and edit all items without making changes
context.Load(web, w => w.Lists);
context.ExecuteQuery();
List dropOffLibrary = web.Lists.GetByTitle(library);
context.Load(dropOffLibrary, dl => dl.RootFolder.Files);
context.ExecuteQuery();
var file = dropOffLibrary.RootFolder.Files.GetByUrl(urlfilepath);
context.Load(file, f => f.ListItemAllFields);
context.ExecuteQuery();
Microsoft.SharePoint.Client.ListItem newItem = file.ListItemAllFields;
foreach (KeyValuePair<string, string> entry in mydictionary)
{
// entry.Key has to be in the property list of that document
// the name is very specific
try
{
newItem[entry.Key] = entry.Value;
}
catch
{
// Key was not found in list
// go to next key
}
}
newItem.Update();
//file.Update();
context.Load(file);
context.ExecuteQuery();
context.Load(dropOffLibrary, dl => dl.RootFolder.Files);
context.ExecuteQuery();
}
}