WCF数据服务:400保存大量更改时的错误请求

时间:2011-11-29 01:16:57

标签: c# .net wcf wcf-data-services

我有一个客户端可以创建数千个实体并将其发送到服务,如下所示:

for(int i=0;i<99999999; i++)
{
    var contract = new Contract { Id = i, Name = "Ctr" + i.ToString() , ... }
    service.AddToContracts(contract);
}

svc.SaveChanges(SaveChangesOptions.Batch);

问题是当我尝试保存更改时,我得到以下异常:

“400 - 错误请求”

4 个答案:

答案 0 :(得分:2)

WCF数据服务不是很擅长编写大量数据。

一年前,当我的代码试图编写100,000个对象时,我遇到了麻烦...我修改了代码以将对象添加到较小的块中(失去了我操作的事务性质),这很有效。

答案 1 :(得分:1)

您可以尝试增加MaxStringContentLengthMaxReceivedMessageSize值。

This博客会帮助您。

答案 2 :(得分:1)

不要仅在最后保存为批次,而是保存每100个合同或其他内容。

答案 3 :(得分:0)

您可以在服务上启用跟踪,以确定您的请求失败的确切错误及其原因是什么?如果有许多实体传递给您的WCF服务,请尝试在web.config中增加以下设置

<dataContractSerializer maxObjectsInGraph="1000000000"/> 

如果您可以发布服务配置,也会很容易。