Как я могу увеличить ограничение в байтах в моем ASP. Net Core SOAP ServiceContract? - PullRequest
0 голосов
/ 17 марта 2020

У меня есть ASP. Net приложение Core 3, которое обменивается данными с Web-коннектором Quickbooks.

У меня проблемы с выяснением, как увеличить максимально допустимые байты с 8192 до чего-то большего. Большинство запросов Quickbooks содержат больше данных, чем это.

В моем контракте на обслуживание есть следующее:

QBW C .asmx

[ServiceContract(Namespace = @"http://developer.intuit.com/")]
public interface IQBWCService
{
    [OperationContract]
    int receiveResponseXML(string ticket, string response, string hresult, string message);
}

и в моем Startup.cs

app.UseSoapEndpoint<IQBWCService>("/qbwc/qbwc.asmx", new BasicHttpBinding(), SoapSerializer.XmlSerializer, true);

Когда Quickbooks пытается отправить что-то более 8192 байт, я получаю следующую ошибку:

System.Xml.XmlException: The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

Я не могу найти ничего называется MaxStringContentLength где угодно.

Любая помощь в том, что я делаю неправильно?

1 Ответ

0 голосов
/ 17 марта 2020

понял это. Измените эту строку

app.UseSoapEndpoint<IQBWCService>("/qbwc/qbwc.asmx", new BasicHttpBinding(), SoapSerializer.XmlSerializer, true);

на эту

var httpBinding = new BasicHttpBinding();
httpBinding.ReaderQuotas.MaxStringContentLength = 5000000;  
app.UseSoapEndpoint<IQBWCService>("/qbwc/qbwc.asmx", httpBinding, SoapSerializer.XmlSerializer, true);
...