我可以将此 wsHttpBinding 转换为支持流的自定义 WCF 绑定吗?

Can I convert this wsHttpBinding to a custom WCF binding that supports streaming?

我对 WCF 不是很熟悉,但我最近继承了一个旧的 API,它使用了以下 wsHttpBinding 的两个版本,我的任务是添加一个新的 API 使用流式调用它。

<wsHttpBinding>
  <binding name="wsHttpBinding" maxReceivedMessageSize="2147483647" maxBufferPoolSize="0" receiveTimeout="05:00:00" sendTimeout="05:00:00">
    <readerQuotas maxArrayLength="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" maxDepth="64" maxBytesPerRead="66560" />
    <security mode="None/Transport">
      <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
    </security>
  </binding>
</wsHttpBinding>

注:QA版本使用安全模式None,prod版本使用安全模式Transport,其他相同

虽然这种类型的绑定不支持流式传输,但目前似乎没有使用可靠的会话(假设缺少 <reliableSession> 元素意味着它被禁用),所以我想知道它是否或许可以将其转换为一个 customBinding,它的工作原理相同,但会为将要使用它的一个调用启用流式处理。

很久以前我就看到类似的问题已经用 BindingBox 回答了,一个看似非常有用的工具现在已经不可用了。不幸的是,我还没有找到镜像或源代码,所以没有这个工具,我如何确定这个自定义绑定是否可行,如果可以,请着手创建它?

经过大量搜索,我根据this very old blog post and the customBinding documentation拼凑了以下内容。这相当于 None 安全模式;对于 Transport 安全模式,只需将 httpTransport 元素名称替换为 httpsTransport

<customBinding>
  <binding name="wsHttpStreamBinding" receiveTimeout="05:00:00" sendTimeout="05:00:00">
    <textMessageEncoding>
      <readerQuotas maxArrayLength="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" maxDepth="64" maxBytesPerRead="66560" />
    </textMessageEncoding>
    <httpTransport transferMode="Streamed" maxReceivedMessageSize="2147483647" maxBufferSize="104857600" />
  </binding>
</customBinding>