我是Sharepoint和客户端对象模型的新手。我遇到了一个问题,没能解决这个问题。我想在Sharepoint 2013中使用客户端对象模型上传超过10MB的文件。我得到以下异常
请求消息太大。服务器不允许邮件其大于2097152个字节。
我什么都试过了。以下是我做的事情列表
1-更改了本地web应用程序的web.config文件中的设置
<system.web>
<httpRuntime useFullyQualifiedRedirectUrl="true" maxRequestLength="2147483647" requestLengthDiskThreshold="2147483647" executionTimeout="18000"/> </system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
2-在我的服务器上的powershell中运行以下命令,并在IIS中重新启动应用程序。甚至重新启动了整个IIS。
$ws = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$ws.ClientRequestServiceSettings.MaxReceivedMessageSize = 2147483647
$ws.Update()
这是我的代码:
private void UploadDataToSharepointTest(List<UploadData> pDataObjList)
{
string lServerUrl = @"http://xxxxxxx:2000/";
string lFolderName = DateTime.Now.ToString(@"yyyyMMddHHmmss");
ClientContext context = new ClientContext(lServerUrl);
context.AuthenticationMode = ClientAuthenticationMode.Default;
context.Credentials = new System.Net.NetworkCredential("user", "password", "domain");
Web web = context.Web;
List docs = web.Lists.GetByTitle("ABC");
Folder lNewFolder = web.Folders.Add(lServerUrl + "ABC/" + lFolderName + "/");
docs.Update();
int fileIndex = 1;
foreach (var item in pDataObjList)
{
FileCreationInformation newFile = new FileCreationInformation();
newFile.Content = System.IO.File.ReadAllBytes(item.CompleteFilePath);
newFile.Url = fileIndex.ToString() + "-" + item.fileName;
fileIndex++;
Microsoft.SharePoint.Client.File uploadFile = lNewFolder.Files.Add(newFile);
context.Load(uploadFile);
context.ExecuteQuery();
Dictionary<string, string> metadata = new Dictionary<string, string>();
metadata.Add("Comments", item.comments);
metadata.Add("Plan_x0020_Size", item.planSize);
metadata.Add("Density", item.density);
metadata.Add("First_x0020_Name", txtFirstName.Text.Trim());
metadata.Add("Last_x0020_Name", txtLastName.Text.Trim());
metadata.Add("Company", txtCompany.Text.Trim());
metadata.Add("Contact", txtContact.Text.Trim());
metadata.Add("Additional_x0020_Comments", txtAdditionalComments.Text.Trim());
Microsoft.SharePoint.Client.ListItem items = uploadFile.ListItemAllFields;
context.Load(items);
context.ExecuteQuery();
foreach (KeyValuePair<string, string> metadataitem in metadata)
{
items[metadataitem.Key.ToString()] = metadataitem.Value.ToString();
}
items.Update();
context.ExecuteQuery();
}
}
注意:我可以上传小文件。
如果使用内置上传功能,则会有文件大小限制。
若要上载大文件,请使用文件流进行上载。
看看下面的文章:
http://blogs.msdn.com/b/sridhara/archive/2010/03/12/uploading-files-using-client-object-model-in-sharepoint-2010.aspx
SharePoint允许您通过中央管理配置此项,我会坚持这样做,以确保它为您做出所有适当的更改。您需要具有服务器场级别的权限。此外,在SharePoint 2013中,您可以对不同的文件类型设置不同的文件最大限制,因此请确保您的文件类型没有被任何人更改。基于文件类型的不同最大值
通过中央管理访问SharePoint Web应用程序属性