我有一个客户端可以创建数千个实体并将其发送到服务,如下所示:
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 - 错误请求”
答案 0 :(得分:2)
WCF数据服务不是很擅长编写大量数据。
一年前,当我的代码试图编写100,000个对象时,我遇到了麻烦...我修改了代码以将对象添加到较小的块中(失去了我操作的事务性质),这很有效。
答案 1 :(得分:1)
您可以尝试增加MaxStringContentLength
和MaxReceivedMessageSize
值。
This博客会帮助您。
答案 2 :(得分:1)
不要仅在最后保存为批次,而是保存每100个合同或其他内容。
答案 3 :(得分:0)
您可以在服务上启用跟踪,以确定您的请求失败的确切错误及其原因是什么?如果有许多实体传递给您的WCF服务,请尝试在web.config中增加以下设置
<dataContractSerializer maxObjectsInGraph="1000000000"/>
如果您可以发布服务配置,也会很容易。