中为一些命名的WCF服务提供配置而其余的则默认

本文关键字:配置 服务 默认 WCF services | 更新日期: 2023-09-27 18:16:43

我有一些WCF服务(10+)工作正常,但我有一个文档服务需要更高的限制。

我可以指定一个未命名的HTTP绑定,这可以正常工作,但会将设置应用于每个服务

<binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
  <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>

然而,如果给这个命名(例如name="LargeHttpBinding"),并尝试在服务块中指定单个服务…

<services>
  <service name="My.Service.Name">
    <endpoint binding="webHttpBinding" bindingConfiguration="LargeHttpBinding" contract="My.Service.IName" />
  </service>
</services>

…那么什么都不会起作用,大概是因为现在意味着每个服务都必须在services中单独命名?是否有办法将一个服务列在列表中,并将结果默认为正常,或者如果至少有一个服务列在列表中,则必须将所有服务都列在列表中?

在<services>中为一些命名的WCF服务提供配置而其余的则默认

我有点困惑,但是您不能只使用两个绑定——作为默认使用的无名绑定和专门应用于需要它的服务的命名绑定吗?

<binding messageEncoding="Text">
  <readerQuotas maxDepth="2000000" />
</binding>
<binding name="SpecificBinding" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
  <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>

这样,无名绑定将被用作默认值,而命名绑定将只应用于指定该绑定配置名称的服务。