Sharepoint UploadFile“指定的参数超出了有效值的范围”

Jor*_*mus 4 c# sharepoint csom

我正在尝试将文件从一个库复制到远程事件接收器中的另一个库。

当到达UploadFile-function 时,我收到以下错误:

Specified argument was out of the range of valid values. Parameter name: bytesToCopy

有关该功能的信息可以在此处找到。它具有以下签名:

public static Microsoft.SharePoint.Client.File UploadFile (this Microsoft.SharePoint.Client.Folder folder, string fileName, System.IO.Stream stream, bool overwriteIfExists);
Run Code Online (Sandbox Code Playgroud)

我的代码是:

using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
{
    ClientResult<Stream> data = curItem.File.OpenBinaryStream();
    clientContext.ExecuteQuery();

    if (data != null && data.Value != null)
    {

         data.Value.CopyTo(stream);
         UploadedFile = destinationList.RootFolder.UploadFile(curItem.File.Name.ToString(), stream, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意:curItemdestinationListcurItem.File都在上下文中加载。

编辑,完成错误:

   at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream)
   at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()
   at Microsoft.SharePoint.Client.ClientContextExtensions.ExecuteQueryImplementation(ClientRuntimeContext clientContext, Int32 retryCount, Int32 delay, String userAgent)
   at Microsoft.SharePoint.Client.FileFolderExtensions.UploadFile(Folder folder, String fileName, Stream stream, Boolean overwriteIfExists)
   at PG.SHP.SCE.QCSPAddInWeb.Services.AppEventReceiver.HandleItemCheckedIn(SPRemoteEventProperties properties) in C:\Users\OBJ_JDWR\Source\Workspaces\SharePoint\SCE\Main\Source\PG.SHP.SCE\Source\PG.SHP.SCE.QCSPAddInWeb\Services\AppEventReceiver.svc.cs:line 288
Run Code Online (Sandbox Code Playgroud)

288行: 在此输入图像描述

如何消除错误?

oer*_*ens 7

快速的谷歌搜索让我找到了这篇文章

有人遇到了类似的问题(尽管他认为这与文件大小有关),并通过在将流发送到 SharePoint 之前重置流来解决该问题:

using (var stream = content)
{
    ...
    stream.Seek(0, SeekOrigin.Begin); // <-- The missing statement
    ...
}
Run Code Online (Sandbox Code Playgroud)

希望这也适合你:)