CommunicationException при импорте Acumatica TaxCategory - PullRequest
0 голосов
/ 04 ноября 2018

Попытка импортировать / установить соединение Tax на TaxCategory через TaxCategoryTaxDetail.

var categoryDetails = new TaxCategoryTaxDetail
{
    TaxID = new StringValue {Value = "MYTAXID"},
    TaxCategory =  new StringValue {Value = "TAXABLE"},
};

var category = new TaxCategory
{
    TaxCategoryID = new StringValue {Value = "TAXABLE"},
    Details = new[] {categoryDetails}
};

_client.Put(category);

Вызов Put бросков:

The maximum message size quota for incoming messages (6553600) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.

Версия конечной точки: 17.200.001 Версия Acumatica: 18.107.0022 Клиентское приложение находится в Visual Studio 2017 с использованием конечной точки wsdl.

Полезная нагрузка categoryDetails крошечная по сравнению с некоторыми другими рабочими вызовами, которые я использую.

categoryDetails сохраняются в Acumatica правильно, хотя. Кажется, будто Put выполняет обновление, а затем возвращает фактическую категорию с сервера обратно клиенту. Категория в Acumatica содержит тысячи связанных налоговых отчетов. Я не хочу или не нуждаюсь в этом. Я бы предпочел, чтобы это был пожар и забыл обновление.

Я мог бы catch исключение и продолжить, но это очень медленно, ожидая исключения. И я чувствую, что просто делаю что-то не так.

1 Ответ

0 голосов
/ 05 ноября 2018

Длина возвращаемых данных превышает MaxReceivedMessageSize свойство привязки.

Вы можете увеличить лимит в файле app.config:

<binding name="DefaultSoap" allowCookies="true" maxReceivedMessageSize="2147483647">
    <security mode="Transport" />
</binding>

или непосредственно в конструкторе мыльного клиента:

using (soapClient = new DefaultSoapClient(new BasicHttpBinding()
{
    AllowCookies = true,
    Name = "DefaultSoap",
    MaxBufferSize = 2147483647,
    MaxReceivedMessageSize = 2147483647,
    Security = new BasicHttpSecurity() { Mode = BasicHttpSecurityMode.Transport }
},
new EndpointAddress(url)))
{
}

В вызове веб-службы вы также можете указать поведение возврата:

ReturnBehavior = ReturnBehavior.None
...