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

And*_*cov 1 c# wcf binding svc

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

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

Tim*_*Tim 6

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

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

创建默认绑定配置部分.这是通过name从绑定中省略属性来完成的,如下所示:

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding maxReceivedMessageSize="528880" />
    </basicHttpBinding>
  </bindings>
<system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

请注意,没有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> 
Run Code Online (Sandbox Code Playgroud)

第二个示例将"MyBinding"配置分配给定义的端点.

如果您想使用除basicHttpBindinghttp请求之外的其他内容,那么您也可以更改协议映射,如Neel的答案所示.

您还可以查看A Developer的Windows Communication Foundation 4简介,了解有关WCF 4.0中引入的默认绑定/端点/等的更多信息.