带有 CustomBinding 的 WCF 服务配置 HTTPS

Posted

技术标签:

【中文标题】带有 CustomBinding 的 WCF 服务配置 HTTPS【英文标题】:WCF Service configuration HTTPS with CustomBinding 【发布时间】:2013-10-14 11:24:37 【问题描述】:

我需要对 WCF 服务进行自定义绑定,以允许我将原始内容传递给 WCFRest 服务。效果很好,但我无法让它接受传输级别的安全性。我想要 https 和 basicauthentication,就像我在其他地方使用的一样。端点如下所示:

   <endpoint address="" behaviorConfiguration="web" contract="SmsService.ISmsReceive" binding="customBinding" bindingConfiguration="RawReceiveCapable"></endpoint>

customBinding 如下所示:

  <customBinding>
    <binding name="RawReceiveCapable">
      <security mode="Transport">
        <transport clientCredentialType="Basic"/>
      </security>
      <webMessageEncoding webContentTypeMapperType="SmsService.RawContentTypeMapper, SmsService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <httpTransport manualAddressing="true" maxReceivedMessageSize="524288000" transferMode="Streamed" />
    </binding>
  </customBinding>

但系统抱怨安全节点中不允许使用模式属性。没有安全节点,一切都很好,但它不是 https。

谢谢

【问题讨论】:

【参考方案1】:

我认为您需要删除 &lt;security&gt; 元素,然后将 httpTransport 元素更改为 httpsTransport,如下例所示:

<system.serviceModel>
    <bindings>
        <customBinding>
            <binding name="RawReceiveCapable">
              <webMessageEncoding webContentTypeMapperType="SmsService.RawContentTypeMapper, SmsService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
              <httpsTransport authenticationScheme="Basic"  manualAddressing="true" maxReceivedMessageSize="524288000" transferMode="Streamed" />
            </binding>
        </customBinding>
    </bindings>

以下链接可能会有所帮助: http://msdn.microsoft.com/en-us/library/ms731818.aspx

【讨论】:

以上是关于带有 CustomBinding 的 WCF 服务配置 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

WCF 自定义绑定 - 服务响应,客户端不响应

使用 CustomBinding 进行抢先式身份验证?

WCF 服务奇怪的行为

在 .Net Core 3.1 中使用 WCF 服务

如何让 gzip 压缩在 WCF 4.5 中工作

WCF:将 Nonce 添加到 UsernameToken