Клиентская объектная модель Sharepoint 2010 — загрузка документа (конфликт 409)

Я использую клиентскую объектную модель SP2010 для загрузки в библиотеку документов, следуя указаниям Microsoft здесь: http://msdn.microsoft.com/en-us/library/ee956524.aspx#SP2010ClientOMOpenXml_Uploading

Я сталкиваюсь с кодом состояния HTTP 409 (конфликт) при выполнении следующего кода.

var clientContext = new ClientContext("http://myservername/sites/subsitename") { Credentials = LogonCredentials };
using (var fileStream = new FileStream(@"C:\Temp\Test.txt", FileMode.Open))
{
    Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, "/MyDocLibraryName/Test_FromClientOM.txt", fileStream, true);
} 

Что я делаю не так?


person Jeremy    schedule 06.12.2010    source источник


Ответы (4)


Проблема здесь заключалась в том, что сайт, на который я загружаю, является дочерним сайтом, а не корнем sharepoint. Я не знаю, был ли это выбор «дизайна» или нет, но кажется, что вы должны использовать корень точки доступа для ClientContext, по крайней мере, в этом конкретном случае.

Рабочий код:

var clientContext = new ClientContext("http://myservername") { Credentials = LogonCredentials };
using (var fileStream = new FileStream(@"C:\Temp\Test.txt", FileMode.Open))
{
       Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, "/sites/subsitename/MyDocLibraryName/Test_FromClientOM.txt", fileStream, true);
} 
person Jeremy    schedule 06.12.2010

Я также столкнулся с ошибкой 409 при попытке загрузить файл через клиентскую объектную модель SharePoint 2010. Убедитесь, что путь, по которому вы загружаете файл, полностью существует. Вызов не создаст никаких (вложенных) папок. Неважно, подключаете ли вы свой ClientContext к корневому веб-сайту или напрямую к дочернему сайту, как вы говорите. Просто убедитесь, что вы всегда передаете методу SaveBinaryDirect относительный URL-адрес SPSite существующего места для загрузки.

Например, если вы подключаете свой ClientContext к http://somesite/sites/subsitename, убедитесь, что вы передавая в SaveBinaryDirect также строку /sites/subsitename/documents/filename.txt, то есть относительно SPSite, а не дочернего сайта, к которому вы подключаетесь, используя свой ClientContext.

person Koen Zomers    schedule 02.01.2011

У Соледад Пано есть запись в блоге Ошибка загрузки файла SharePoint: "Удаленный сервер вернул ошибку: (409) Конфликт", что помогло мне:

Я понял, что проблема была в имени библиотеки. На нем было тире, например, «My-LibraryName». Когда я переименовал его без тире, он начал работать

person user4531    schedule 27.08.2015
comment
Большое спасибо. Это была точная проблема и в моем случае. Определенно сэкономил мне время. - person Amit Tyagi; 28.02.2017

В моем случае файл был загружен с помощью SaveBinaryDirect в библиотеку с включенным управлением версиями. Если файл не возвращен, любые последующие попытки загрузить более новую версию приведут к ошибке 409. Обязательно зарегистрируйтесь после загрузки, когда управление версиями включено.

    var clientContext = (ClientContext)file.Context;
    destinationWebContext.Load(destinationList, d => d.ParentWebUrl);
    destinationWebContext.Load(destinationList, d => d.RootFolder.ServerRelativeUrl);
    clientContext.Load(file, f => f.ServerRelativeUrl);
    clientContext.Load(file, f => f.Name);

    if (clientContext.HasPendingRequest)
       clientContext.ExecuteQueryRetry();

    if (destinationWebContext.HasPendingRequest)
        destinationWebContext.ExecuteQueryRetry();

    var location = string.Format("{1}/{2}", destinationList.ParentWebUrl, destinationList.RootFolder.ServerRelativeUrl, file.Name);
    var fileInfo = File.OpenBinaryDirect(clientContext, file.ServerRelativeUrl);
    File.SaveBinaryDirect(destinationWebContext, location, fileInfo.Stream, overwrite);

    File newFile = destinationWebContext.Web.GetFileByServerRelativeUrl(location);
    newFile.CheckIn("Checked in by provisioning service", Microsoft.SharePoint.Client.CheckinType.MajorCheckIn);
    destinationWebContext.ExecuteQuery();
person Milan Zdimal    schedule 31.10.2018