Проблема обмена метаданными - лимит на количество методов? - PullRequest
1 голос
/ 01 сентября 2011

У меня есть служба WCF, которая предоставляет 34 метода. До сегодняшнего дня обмен метаданными с использованием MetadataExchangeClient работал нормально, но внезапно я начал получать следующее исключение:

Метаданные содержат ссылку, которая не может быть разрешена: http://localhost:1150/service.svc?wsdl=wsdl0

Самое «интересное» состоит в том, что, если я закомментирую некоторые методы ( независимо от того, какие ) в контракте на обслуживание, так что служба предоставляет меньше методов, которые я могу получить метаданные в самый раз. В настройках web.config указано

<system.serviceModel>
<services>
  <service name="(...)" serviceBehavior="(...)">
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>
<behaviors>
    <serviceBehaviors>
        <behavior name="(...)"><serviceMetadata httpGetEnabled="True"></behavior>
    <serviceBehaviors>
</behaviors>

Все имена соответствуют пространствам имен, и все работает хорошо, демонстрируя, скажем, 15 методов. Всякий раз, когда я пытаюсь разоблачить больше, и неважно, какие из них, я получаю это исключение. Что я делаю неправильно?

1 Ответ

1 голос
/ 01 сентября 2011

Бьюсь об заклад, добавленные методы делают размер сообщения больше, чем макс.Есть ли у вас внутреннее исключение, говорящее «Превышена квота максимального размера сообщения для входящих сообщений (65536)»?

Если это так, увеличьте MaxReceivedMessageSize вашей мекс-привязки:

    <services>
        <service>
            <endpoint contract="IMetadataExchange" binding="wsHttpBinding" bindingConfiguration="mexBinding" address="mex" />
        </service>
    </services>
    <bindings>
        <wsHttpBinding>
            <binding name="mexBinding" maxReceivedMessageSize="5000000">
                <security mode="None"/>
            </binding>
        </wsHttpBinding>
    </bindings>

Обратите внимание,привязка конечной точки не является стандартной «mexHttpBinding».Я копирую из полного примера , опубликованного на http://www.dasblonde.net.

...