Служба WCF, размещенная в IIS 7 - параметры конфигурации привязки игнорируются - PullRequest
4 голосов
/ 23 ноября 2011

У меня есть операция службы WCF, которая принимает байтовый массив как часть своего контракта на данные.Служба доступна только для внутреннего использования (не для Интернета), и я хочу увеличить квоты, чтобы разрешить массив байтов размером 10 МБ.

Служба размещена в IIS7.Когда я пытаюсь отправить байтовый массив с длиной по умолчанию, я получаю следующее сообщение об исключении:

Произошла ошибка десериализации объекта типа MyService.ServiceContracts.Data.Максимальная квота длины массива (16384) была превышена при чтении данных XML.Эту квоту можно увеличить, изменив свойство MaxArrayLength объекта XmlDictionaryReaderQuotas, используемого при создании средства чтения XML.Строка 1, позиция 22991.

Вот конфигурация:

<system.serviceModel>
    <netTcpBinding>
        <binding name="largeBinaryBinding" maxReceivedMessageSize="10001000" 
                 maxBufferPoolSize="80008000" maxBufferSize="10001000"
                 receiveTimeout="00:01:00" openTimeout="00:01:00" 
                 closeTimeout="00:01:00" sendTimeout="00:01:00">
            <readerQuotas maxArrayLength="10000000" />
        </binding>
    </netTcpBinding>

    <services>
        <service name="MyService">
            <endpoint binding="netTcpBinding"
                      bindingConfiguration="largeBinaryBinding"
                      bindingNamespace="http://my.services.co.uk/MyService"
                      contract="Services.MyService.ServiceContracts.IMyService" />
        </service>
    </services>
</system.serviceModel>

Итак, моя конфигурация допускает сообщения большего размера, но IIS, кажется, игнорирует это - как мне это остановитьразрешить большие сообщения через?

1 Ответ

9 голосов
/ 23 ноября 2011

Опять же, сразу после публикации вопроса я нахожу ответ!

При использовании WAS необходимо указать полное имя класса службы в имени службы конфигурации.Так что в моем примере у меня был класс реализации службы с именем MyService в пространстве имен Services.Поэтому в конфигурации мне нужно

<service name="Services.MyService">
   ...

В противном случае IIS молча игнорирует вашу тщательно созданную конфигурацию!Как удобно.

...