Бинарное кодирование WCF через http - PullRequest
0 голосов
/ 17 февраля 2011

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

Я получаю эту ошибку при попытке позвонить в службу через ChannelFactory:

Тип содержимого application / soap + msbin1 не поддерживается службой http://cjm -dell-dev-pc / BoaService / BoaService.svc

Конфигурация службы:

<bindings>
   <customBinding>
      <binding name="BoaAppBinaryBinding">
         <binaryMessageEncoding />
         <httpTransport />
      </binding>
   </customBinding>
</bindings>
<services>
   <service behaviorConfiguration="ServBehave" name="AddressService">
      <endpoint address="http://localhost/BOAService/BoaService.svc"
          binding="customBinding" bindingConfiguration="BoaAppBinaryBinding"
          name="AddressService" contract="IAddressService" />
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
   </service>
</services>
<behaviors>
   <serviceBehaviors>
      <behavior name="ServBehave">
         <serviceDebug includeExceptionDetailInFaults="true"/>
         <serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="100" maxConcurrentInstances="100"/>
      </behavior>
   </serviceBehaviors>
</behaviors>

Код:

BindingElementCollection elements = new BindingElementCollection();   

elements.Add(new BinaryMessageEncodingBindingElement());     
elements.Add(new HttpTransportBindingElement());
var custBinding = new CustomBinding(elements);

EndpointAddress address = new EndpointAddress(new Uri("http://CJM-DELL-DEV-PC/BoaService/BoaService.svc", UriKind.Absolute));

var factory = new ChannelFactory<IAddressService>(custBinding, address);

IAddressService channel = factory.CreateChannel();

GetAddressReq req = new GetAddressReq();
req.AddressId = 2;

var addressRep = channel.GetAddress(req);

factory.Close();

Iполучить ту же ошибку при попытке использовать сгенерированный svcutil прокси.

Конфиг клиента

<system.serviceModel>
   <bindings>
      <customBinding>
         <binding name="BoaAppBinaryBinding">
            <binaryMessageEncoding />
            <httpTransport allowCookies="false"
                           bypassProxyOnLocal="false"                         
                           hostNameComparisonMode="StrongWildcard" 
                           maxBufferSize="65536"                          
                           maxBufferPoolSize="524288" 
                           maxReceivedMessageSize="65536"                          
                           transferMode="Buffered" useDefaultWebProxy="true" 
                           keepAliveEnabled="true"   />
         </binding>
      </customBinding>
</bindings>
<client>
   <endpoint name="AddressService"  
        address="http://localhost/BoaService/BoaService.svc"
        binding="customBinding" bindingConfiguration="BoaAppBinaryBinding"
        contract="IAddressService" />
</client>

Заранее спасибо.C Windows 7 Pro Visual Studio 2010

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...