Боже, разве ты не любишь WCF.
Я читал все возможные темы, но я действительно поправь сейчас.
Вот конфигурация WCF:
Теперь я отправляю сообщение и получаю это исключение по умолчанию (видно в файле svclog):
Максимальная квота на размер сообщения для входящих сообщений (65536) была превышено. Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize в соответствующем элементе привязки.
Сейчас четко заявляю, что должно быть 4мб.
Мой клиентский код:
TableTaskServiceClient client =
new TableTaskServiceClient(
new BasicHttpBinding { MaxBufferSize = 4194304,
MaxReceivedMessageSize = 4194304 },
new EndpointAddress(GetEndpointAddressString())
);
Тем не менее, он выдает мне ошибку размера 65536. Откуда это ?? ..
Также ДЕЙСТВИТЕЛЬНО ли имеет значение, что клиент устанавливает MaxReceivedMessageSize
на то же значение, что и сервер? Думаю, было бы логично, чтобы за определение длины отвечал сервер, а не клиент.
Также есть это предупреждение (обратите внимание, насколько оно полезно в том, что в нем говорится, а именно: нет информации об элементе, который переопределяется, или я что-то упускаю), может быть, именно basichttpbinding является тем, что переопределяется? но почему это должно быть? в любом случае:
[TraceRecord] Предупреждение о серьезности TraceIdentifier http://msdn.microsoft.com/ en-US / library / System.ServiceModel.OverridingDuplicateConfigurationKey.aspx Описание Система конфигурации обнаружила повторяющийся ключ в другой области конфигурации и заменяет собой более новую {{1} }} значение. AppDomain / LM / W3SVC / 11 / ROOT / TableTaskService-33-1296567 Source System.ServiceModel.Configuration.ServiceBehaviorElementCollection / -851144413 ElementName, поведение OldElementLineName 0
ОБНОВЛЕНИЕ: перенастроил и службу, и клиент:
TableTaskServiceClient client = new TableTaskServiceClient(
new BasicHttpBinding {
MaxBufferSize = 4194304,
MaxReceivedMessageSize = 4194304,
MaxBufferPoolSize=4194304,
ReaderQuotas = new XmlDictionaryReaderQuotas
{
MaxArrayLength = 4194304,
MaxBytesPerRead = 4194304,
MaxDepth = 4194304,
MaxNameTableCharCount = 4194304,
MaxStringContentLength = 4194304
}
}, new EndpointAddress(GetEndpointAddressString()));
По-прежнему та же ошибка.
Если это интересно, я отправляю массив byte [] длиной 467000 ~