Службы данных WCF: 400 неверных запросов при сохранении большого количества изменений - PullRequest
1 голос
/ 29 ноября 2011

У меня есть клиент, который создает тысячи объектов и отправляет их в службу следующим образом:

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 ]

2 голосов
/ 29 ноября 2011

Службы данных WCF не очень хорошо пишут большие объемы данных.

У меня возникли проблемы около года назад, когда мой код пытался написать 100 000 объектов ... Я изменил код, чтобы добавитьобъекты меньшими порциями (теряя транзакционный характер моей операции), что сработало.

1 голос
/ 29 ноября 2011

Не сохраняйте как пакет только в конце, а вместо этого сохраняйте каждые 100 добавленных контрактов или что-то в этом роде.

1 голос
/ 29 ноября 2011

Вы можете попробовать увеличить значения MaxStringContentLength и MaxReceivedMessageSize.

Этот блог поможет вам.

0 голосов
/ 29 ноября 2011

Вы можете включить трассировку на своем сервисе, чтобы получить точную ошибку о том, где ваш запрос терпит неудачу и в чем причина? Если в службу WCF передано много объектов, попробуйте увеличить следующие параметры в файле web.config

.
<dataContractSerializer maxObjectsInGraph="1000000000"/> 

Также было бы легко, если бы вы могли опубликовать конфигурацию вашего сервиса.

...