使用C#的SharePoint 2016签入-FileNotFound异常

时间:2019-05-15 15:01:18

标签: c# sharepoint automation sharepoint-2016

我正在使用以下代码使用C#将文件检入SharePoint 2016。但是它抛出 Microsoft.SharePoint.Client.ServerException:未找到文件。文件URL有效,并且在控制台中打印了file.name,以确认其有效性。请在这里告知发生了什么问题。

            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

3 个答案:

答案 0 :(得分:0)

尝试一下:

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);
    }
}

答案 1 :(得分:0)

您可能会发现“文件的有效网址”实际上无效。我从一个“有效”的 URL 收到此错误,即从浏览器打开 Sharepoint 中的文件,但我认为文件名包含一些 C# CSOM 接口不支持的字符。就我而言,该文件名为“GetPDF.aspx%2F4AA3-8247ENW.pdf”,因此可能是因为它有两个句点,但我正在努力确认这一点。

答案 2 :(得分:0)

您可以看看https://www.codesharepoint.com/csom/get-checkin-comment-of-file-in-sharepoint-using-csom。我从未使用过 CSOM 和 GetFileByServerRelativeUrl,但我似乎记得 CheckIn 必须发生在文件上,而不是包含文件的项目。