2012-01-23 3 views
0

У меня есть служба WCF с пользовательской конечной точкой привязки.WCF customBinding является базовымHTTPBinding при добавлении ссылки на службу

<customBinding> 
    <binding name="customBinding" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00"> 
     <binaryMessageEncoding> 
     <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" /> 
     </binaryMessageEncoding> 
     <httpTransport maxReceivedMessageSize="40194304" /> 
    </binding> 
    </customBinding>  

Моя служба:

<services> 
    <service name="Test2"> 
    <endpoint address="" binding="customBinding" bindingConfiguration="customBinding" contract="MyServiceContract.ContractInterface"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 

Однако в моем клиентском приложении, всякий раз, когда я добавить ссылку на службу, результирующее задание является BasicHttpBinding (в app.config)

Что может Я делаю, чтобы «заставить» клиента использовать пользовательскую привязку?

Благодаря Alex

ответ

1

Услуга не используется привязка указанный вами. Я предполагаю, что имя службы на самом деле является «MyServiceContract.Test2» (или что-то подобное), а не просто «Test2», поэтому, когда WCF не нашел подходящего элемента <service> в классе службы, он просто использовал конечную точку по умолчанию, которая используется basicHttpBinding.

1

Вы определили класс для своей настраиваемой привязки (класс, полученный из System.ServiceModel.Channels.Binding)?

Если да, добавили ли вы новое связывание в расширения привязки конфигурации?

<extensions> 
    <bindingExtensions> 
    <add name="myCustomeBinding" type="MyCustomeBinding, MyCustomeBindingLibrary" /> 
    </bindingExtensions> 
</extensions> 

Задача привязки - определить «рецепт» для создания канала WCF. В основном рецепт состоит из списка элементов привязки.

Какие элементы привязки, которые вы выбираете в своем рецепте, решают природу связи, которую будет реализовывать канал WCF.

В абсолютном минимуме ваш рецепт обязательных элементов должна включать в себя:

  • кодирование сообщений (текст/двоичный и т.д.)
  • транспорта (HTTP/TCP и т.д.)

Если вы дон У меня есть класс, определяющий вашу привязку, тогда WCF не имеет никакого параметра, кроме как создать канал, основанный на значениях по умолчанию для этих двух элементов привязки, и поэтому, вероятно, был разработан для перехода на basicHttpBinding, когда не определено привязку.

Это было бы моим догадкой.

Смежные вопросы