У меня есть приложение silverlight, которое общается со службой WCF на веб-сайте ASP.NET.Работает следующий код:
var service = new ChannelFactory<IService>(new BasicHttpBinding()
{
MaxReceivedMessageSize = int.MaxValue
},
new EndpointAddress(Settings.ServiceUrl)).CreateChannel();
Но я действительно хочу воспользоваться «двоичным кодированием».Чтобы запустить службу с двоичным кодированием, вы не можете использовать BasicHttpBinding, вам нужно использовать CustomBinding!Следующий код используется в том же месте, но выдает HTTP 415 Неподдерживаемое состояние типа носителя с веб-сервера.В сеансе отладки на сервере не установлены точки останова.
var service = new ChannelFactory<IService>(new CustomBinding(new BinaryMessageEncodingBindingElement(), new HttpTransportBindingElement()
{
MaxReceivedMessageSize = int.MaxValue
}),
new EndpointAddress(Settings.ServiceUrl)).CreateChannel();
Мне нужна помощь, чтобы выяснить, почему этот параметр не работает!Кстати, вот раздел службы в моей веб-конфигурации на стороне сервера:
<system.serviceModel>
<bindings>
<customBinding>
<binding name="myBinding">
<binaryMessageEncoding />
<httpTransport authenticationScheme="Negotiate"/>
</binding>
</customBinding>
</bindings>
<services>
<service name="myService">
<endpoint address="" binding="customBinding" bindingConfiguration="myBinding" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="wcfServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />