使用Silverlight将大文件上传到Sharepoint

时间:2010-08-05 10:34:38

标签: silverlight-4.0 sharepoint-2010

我正在尝试将照片上传到sharepoint库。如果我使用一个相对较小的文件(370KB),那么它的工作没有任何问题。 但是,如果我尝试上传大约3MB的文件,那么我会收到错误: “Der Remoteserver hat einenFehlerzurückgegeben:NotFound。” 翻译: “远程服务器返回错误:NotFound。”

我读到应该可以设置最大邮件大小,但我发现无法在ClientContext对象中设置这样的东西。

这是我使用的代码:

    private void UploadFileCallback(object state)
    {
        var args = (List<object>)state;
        var itemContainer = (ISharepointItemContainer)args.ElementAt(0);
        var fileInfo = (FileInfo)args.ElementAt(1);

        var sharepointList = _context.Web.Lists.GetByTitle(itemContainer.ListName);
        Microsoft.SharePoint.Client.File uploadFile;
        FileCreationInformation newFile;

        using (FileStream fs = fileInfo.OpenRead())
        {
            byte[] content = new byte[fs.Length];

            newFile = new FileCreationInformation();
            int dummy = fs.Read(content, 0, (int)fs.Length);
            newFile.Content = content;
            newFile.Url = itemContainer.AbsoluteUrl + "/" + fileInfo.Name;
            uploadFile = sharepointList.RootFolder.Files.Add(newFile);
            _context.Load(uploadFile);
        }

        _context.ExecuteQuery();

        if (FileUploadCompleted != null)
        {
            FileUploadCompleted(this, EventArgs.Empty);
        }
    }

有没有人知道如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

首先要尝试的是转到SharePoint的管理中心网站中的 Web应用程序管理部分。选择要部署到的Web应用程序的常规设置,并增加最大上传大小。

要尝试的第二件事是将其添加到 web.config

<system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="52428800"/>
      </requestFiltering>
   </security>
</system.webServer>

这样您就可以将尺寸设置为更大的尺寸。

答案 1 :(得分:0)

默认情况下,SharePoint每次上传的最大限制为50MB。 IIS 7(不确定其他版本)每次上传最大限制为30 MB。您需要在IIS中将Ryan提供的XML配置添加到SharePoint网站的web.config中。这是您的前端Web服务器。

答案 2 :(得分:0)

您达到的限制是因为处理客户端对象模型请求的Web服务具有最大邮件大小。您可以增加该大小,但另一种解决方案是使用WebDAV上传文档,如果您无权访问服务器,这将有所帮助。

.NET客户端对象模型有一个方法File.SaveBinraryDirect(),这可能是你最好的选择。

如果您使用的是Silverlight客户端对象模型,则该方法不可用,并且您将编写一些其他代码:请参阅this article,第二部分。第一部分描述了如何增加最大消息大小。

这应该会将您的最大上传大小增加到中央管理员设置的大小(通常为50MB),在其他帖子中指出。

答案 3 :(得分:0)

SharePoint客户端对象模型的默认上载大小限制为2 MB。您可以通过修改服务的MaxReceivedMessageSize属性来更改该限制。

这可以通过两种方式完成:

  • 以编程方式编写 - 如this link中所述 - 例如,这在Silverlight中无法工作

  • 通过powershell。在安装了SharePoint的服务器上,启动SharePoint Management Shell(确保在服务器场管理员帐户下运行它)并运行以下命令。

    $ ws = [Microsoft.SharePoint.Administration.SPWebService] :: ContentService $ ws.ClientRequestServiceSettings.MaxReceivedMessageSize = 52428800

    $ ws.Update()

这会将上传限制更改为52428800字节 - 或50 MB。现在,重新启动托管SharePoint站点(或整个IIS)的网站,以使更改生效。