Проверка SharePoint 2016 с помощью C# — исключение FileNotFound

Я использую приведенный ниже код для возврата файла в SharePoint 2016 с помощью C#. Но он выдает Microsoft.SharePoint.Client.ServerException: File Not Found. URL-адрес файла действителен, и имя файла печатается в консоли, подтверждая его действительность. Пожалуйста, сообщите, что здесь происходит не так.

            string url = "valid url of the file";
            var file = clientContext.Web.GetFileByServerRelativeUrl(url);
            clientContext.Load(file);
            clientContext.ExecuteQuery();
            Console.WriteLine(file.Name); //successfully printed expected result
            file.CheckIn("Test", CheckinType.MajorCheckIn);
            clientContext.Load(file);
            clientContext.ExecuteQuery(); //File Not Found Exception thrown at this point

person Mohamed Idris    schedule 15.05.2019    source источник
comment
зачем дважды загружать файл в контексте?   -  person Farhan    schedule 15.05.2019
comment
Даже после того, как я удалил загрузку, он не работает и выдает ту же ошибку.   -  person Mohamed Idris    schedule 16.05.2019


Ответы (3)


Попробуй это:

using (ClientContext clientContext = GetContextObject())
{
    string url = "valid url of the file";
    var file = clientContext.Web.GetFileByServerRelativeUrl(url);

    using (FileStream fs = new FileStream(file, FileMode.Open))
    {
        File.SaveBinaryDirect(clientContext, file, fs, true);
    }
}
person Edney Holder    schedule 15.05.2019
comment
Это не исключение и сохранение файла. Но файл по-прежнему не зарегистрирован. Это конечная цель, и этого не происходит :( - person Mohamed Idris; 16.05.2019

Вы можете обнаружить, что действительный URL-адрес файла на самом деле недействителен. Я получаю эту ошибку от URL-адреса, который действителен в том смысле, что открывает файл в Sharepoint из браузера, но я думаю, что имя файла содержит некоторые символы, которые не поддерживает интерфейс C# CSOM. В моем случае файл называется GetPDF.aspx%2F4AA3-8247ENW.pdf, так что, вероятно, это потому, что он имеет две точки, но я изо всех сил пытаюсь это подтвердить.

person andyabel    schedule 12.05.2021

Вы можете взглянуть на https://www.codesharepoint.com/csom/get-checkin-comment-of-file-in-sharepoint-using-csom. Я никогда не использовал CSOM и GetFileByServerRelativeUrl, но я, кажется, припоминаю, что CheckIn должен выполняться для файла, а не для элемента, содержащего файл.

person Greg Ogle    schedule 12.05.2021