WCF: как правильно выяснить maxStringContentLength сервиса?
От: KaKaDu  
Дата: 06.07.07 04:46
Оценка:
Стоит задача отправить сервису довольно солидный кусок текста, который с настройками по умолчанию однозначно вызовет исключение на тему слишком большого размера (QuotaExceededException или как там его...). Хочу перед отправкой узнать, какого размера сообщение сервис в принципе готов принять, дабы выдать пользователю предупреждение, ежели чего. Отсюда вопрос: а как правильно этот размер узнать?
Пробовал нечто вроде такого:
int maxStringLength = 0;
...
XmlDictionaryReaderQuotas quotas = serviceClient.Endpoint.Binding.GetProperty<XmlDictionaryReaderQuotas>(
    new System.ServiceModel.Channels.BindingParameterCollection();
if (quotas != null)
{
    maxStringLength = quotas.MaxStringContentLength;
}


Проблема в том, что мне все время возвращается дефолтное значение 8192 вместо того, которое я указал в конфиге сервиса. Кстати, биндинг для сервиса выглядит вот так:
код
<bindings>
    <wsHttpBinding>
        <binding name="HttpBinding" messageEncoding="Mtom">
        <readerQuotas maxStringContentLength="32768"/>
        <reliableSession enabled="true" />
        <security mode="None" />
        </binding>
    </wsHttpBinding>
 </bindings>

В общем, уперся, нуждаюсь в помощи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.