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

本文关键字:服务 绑定 WCF 何更改 默认 | 更新日期: 2023-09-27 18:34:22

在我的WCF中,我有一些服务。其中一个必须对消息大小有更大的限制,因此我必须创建另一个绑定并更改配置。

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

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

在 WCF 4.0+ 中引入了默认绑定和终结点的概念。 例如,如果创建新的 WCF 服务应用程序,则开箱即用且不进行任何更改,您将获得使用 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"配置分配给定义的终结点。

如果你想对 http 请求使用basicHttpBinding以外的其他东西,那么你也可以更改协议映射,如 Neel 的答案所示。

您还可以查看 Windows Communication Foundation 4 开发人员简介,了解有关 WCF 4.0 中引入的默认绑定/终结点等的详细信息

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

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