如何更改默认的WCF服务绑定?

时间:2014-12-16 08:04:31

标签: c# wcf binding svc

在我的WCF中,我有一些服务。其中一个必须对邮件大小有更大的限制,所以我必须创建另一个绑定并更改配置。

但是......我在Web.config中看不到任何我的服务配置 - 什么也没有。什么是默认的? 那么我可以在哪里更改服务绑定?

2 个答案:

答案 0 :(得分:6)

在WCF 4.0+中引入了默认绑定和端点的概念。例如,如果您创建一个新的WCF服务应用程序,开箱即用而没有任何更改,您将使用basicHttpBindinghttp的默认绑定)获取默认端点监听服务的URI。

如果您需要的值大于绑定配置的默认值,则有两种选择:

制作默认的绑定配置部分。这是通过省略绑定中的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请求,那么您也可以更改协议映射,如Neel的回答所示。

您还可以查看A Developer's Introduction to Windows Communication Foundation 4以获取有关WCF 4.0中引入的默认绑定/端点/等的更多信息

答案 1 :(得分:0)

如果要将默认绑定更改为wsHttpBinding,则必须使用:

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