SP2010客户端对象模型3 MB限制 - 更新maxReceivedMessageSize不会应用

时间:2011-09-29 16:32:29

标签: c# sharepoint settings client-object-model

我正在使用客户端对象模型与Sharepoint 2010交互。当我尝试使用客户端OM上载大于3 MB的文档时,它给出了错误错误请求。 Microsoft建议this来解决问题。我试过并更新了maxReceivedMessageSize属性。它重新启动系统后工作正常,但不会应用于正在运行的sharepoint服务器。

我认为由于设置可能已保留在内存中,因此需要重置应用程序,但我会想出要重置的内容。我尝试过重置不同的Sharepoint服务。我尝试在IIS中重置Sharepoint网站。什么都没有帮助。

另外,如果我设置了10 MB的限制,我可以上传大约7.5 MB的文件。我认为这是因为额外的元数据(内容类型属性等)。这是正确的行为,还是我需要改变别的东西。

感谢任何帮助。

问候。

3 个答案:

答案 0 :(得分:5)

我发现this TechNet Forum entry帮我解决了这个问题:

  

请按照以下步骤告诉SharePoint增加文件大小。
  Ø作为SharePoint站点管理员,通过
访问SharePoint 2010 Management Shell   1.在“开始”菜单上,单击“所有程序”   2.单击“Microsoft SharePoint 2010产品”   3.单击“SharePoint 2010 Management Shell”   Ø然后运行以下命令。

     

get-PSSnapin - Registered
  Add-PSSnapin Microsoft.SharePoint.Powershell
  $ws = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
  $ws.ClientRequestServiceSettings.MaxReceivedMessageSize = 2147483647
  $ws.Update()

     

请按照以下步骤告诉Asp.Net增加文件大小。
  Ø编辑所有涉及的web.config文件,添加元素'&lt; httpRuntime&gt;'   完成后,您的添加内容应如下所示   Ø2147483647字节等于1.99 GB   <system.web>
  <httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="2147483647" requestLengthDiskThreshold="2147483647" executionTimeout="18000"/>   </system.web>

     

请按照以下步骤告诉IIS 7.0及更高版本以增加文件大小。
  编辑所有涉及的web.config文件,以添加元素'&lt; requestLimits&gt;'   完成后,您的添加内容应如下所示   <system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/>
      <security>
  <requestFiltering>
  <requestLimits maxAllowedContentLength="2147483647" />
  </requestFiltering>
  </security>
  </system.webServer>

我希望这有帮助!

答案 1 :(得分:2)

这不是SharePoint的问题或严格限制。这是为保护SharePoint基础结构而设置的可操作上载限制。虽然操作上载限制为2 MB,但二进制上载限制为50 MB。

目前有三种方法:

  1. 正如您已经提到的,增加maxReceivedMessageSize。

  2. 使用SaveBinaryDirect方法

    这些方法是从SharePoint 2010开始引入的。它主要使用分布式创作版本控制(DAV)来发出PUT请求。使用此方法,您有50 MB的二进制上载限制。

    以下是方法#2的示例实现,

    string siteURL = "https://records.contoso.com";
    
    using (var context = new Microsoft.SharePoint.Client.ClientContext(siteURL))
    {
       context.Credentials = new NetworkCredential(
          "username", 
          "password", 
          "domain");
       string filePathToUpload = "C:\test\test.txt";
       context.ExecuteQuery();
    
       using (FileStream fs = new FileStream(filePathToUpload, FileMode.Open)
       {
          string targetURL = "/testsite/test.txt";
          Microsoft.SharePoint.Client.File.SaveBinaryDirect(
             context, 
             targetURL, 
             fs, 
             true);
       }
    }
    
  3. 如果您使用的是SharePoint 2013或更高版本,则可以使用REST API。上传限制为2 GB。

答案 2 :(得分:0)

根据你发送的链接,你需要的正确方法应该是这样的:

public static void IncreaseMaxReceivedMessageSize ()
{
    SPWebService contentService = SPWebService.ContentService;

    /* Must set this to -1, else, the MaxReceivedMessageSize value for
    SPWebService.ContentService.WcfServiceSettings["client.svc"] will not be used.*/
    contentService.ClientRequestServiceSettings.MaxReceivedMessageSize = -1;

    // SPWcfServiceSettings has other Properties that you can set.
    SPWcfServiceSettings csomWcfSettings = new SPWcfServiceSettings();
    csomWcfSettings.MaxReceivedMessageSize = 10485760; // 10MB
    contentService.WcfServiceSettings["client.svc"] = csomWcfSettings;

    contentService.Update();
}

请通过编辑您的问题来显示您的代码,并说明您重新启动哪个系统然后它可以正常工作,而不是重新启动或回收您认为不起作用的SP网站...