2014-12-16 4 views
0

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

Но ... я не вижу никакой конфигурации моих сервисов в Web.config - ничего. Что-то по умолчанию? Итак, где я могу изменить привязку услуг?

ответ

5

В WCF 4.0+ понятие привязки по умолчанию и конечных точек была введена. Если вы создаете новое приложение службы WCF, например, из коробки без каких-либо изменений, вы получите конечную точку по умолчанию, которая будет прослушиваться в URI службы, используя basicHttpBinding (привязка по умолчанию для http).

Если вам нужны большие значения, чем значения по умолчанию для конфигурации связывания, у вас есть два варианта:

сделать привязку по умолчанию раздела конфигурации. Это делается путем исключения из атрибута name связывания, например:

<system.serviceModel> 
    <bindings> 
    <basicHttpBinding> 
     <binding maxReceivedMessageSize="528880" /> 
    </basicHttpBinding> 
    </bindings> 
<system.serviceModel> 

Примечания нет нет name атрибута (другие атрибуты были опущены для целей иллюстрации). Указанная вами конфигурация будет использоваться по умолчанию для любого запроса, который приходит через http, и использует basicHttpBinding.

Создать конфигурацию, как и в шаге 1, но используют атрибут name, а затем присвоить, что конфигурацию связывания с явной конечной точки, используя атрибут bindingConfig, например:

<system.serviceModel> 
    <bindings> 
    <basicHttpBinding> 
     <binding name="MyBinding" maxReceivedMessageSize="528880" /> 
    </basicHttpBinding> 
    </bindings> 
    <services> 
    <service name="MyService"> 
     <endpoint address="" bindingConfiguration="MyBinding" binding="basicHttpBinding" contract="MyService.IMyContract" /> 
    </service> 
    </services> 
<system.serviceModel> 

Второй пример присвоит «MyBinding «конфигурация к определенной конечной точке.

Если вы хотите использовать что-то кроме basicHttpBinding для http-запросов, то вы также можете изменить отображение протокола, как показано в ответе Нила.

Вы также можете проверить A Developer's Introduction to Windows Communication Foundation 4 для получения дополнительной информации по умолчанию привязок/конечных точкам/и т.д., введенных в WCF 4.0

0

Если вы хотите изменить значение по умолчанию привязка к WsHttpBinding вы должны использовать:

<protocolMapping> 
    <add scheme="http" binding="wsHttpBinding"/> 
</protocolMapping> 
+0

Так я могу создать свой собственный связыванию с моими ограничениями размера сообщения и использовать эту protocolMapping для отображения все запроса НТТРА использовать мою привязку? – AndreiGolacov

+0

Изменение привязки с по умолчанию 'basicHttpBinding' до' wsHttpBinding' само по себе не решит проблему. При желании вы можете определить свои собственные конфигурации для привязок, используя существующие привязки. WCF 4.0 упростил ситуацию с точки зрения конфигурации, но также ввел много путаницы. – Tim

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