适用于https SOAP服务的ASP.Net 4.6.1上的WCF是否需要protocolMapping标签?

时间:2018-09-19 21:18:45

标签: c# asp.net .net wcf iis

我们最近将应用程序从.Net 4.5升级到了4.6.1。在4.5中,我们的web.config中没有protocolMapping标记。开发人员签入的更新服务具有此标签,因此我们将其部署为升级的一部分。

如果我们删除该标签(基本上使用与4.5中使用的相同的system.ServiceModel),则对于该服务的所有HTTPS请求都将得到404。好的,我将其保留在原处。

但是,令人困惑的部分是,默认情况下,标签说:

<protocolMapping>
    <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>

这迫使所有https请求都使用basicHttpsBinding,但是我们的服务使用了customBinding。

这是我们的终结点定义,其中引用了自定义绑定:

<endpoint address="" binding="customBinding" 
    bindingConfiguration="Soap12SecureBinding"
      name="NotificationService" contract="NOTSvc">

因此,我将protocolMapping中的绑定值更改为“ customBinding”,但在定义的绑定中未获取任何值。它仍然使用Soap 1.1,但是我的自定义绑定指定了Soap 1.2

因此我将bindingConfiguration添加到add标记中,现在我的协议映射如下所示:

<protocolMapping>
  <add binding="customBinding" scheme="https" 
      bindingConfiguration="Soap12SecureBinding" />
</protocolMapping>

这使它起作用,但这是不对的。首先,我现在只能对网站上的所有服务使用一个bindingConfiguration。另外,我的服务端点绝对引用了我的自定义绑定“ Soap12SecureBinding”,但是除非我在protocolMapping中显式使用它,否则它不会受到尊重。

我想念什么?某些东西必须配置错误,但是我在这个问题上已经花了将近一个星期的时间,而且变得空白。

谢谢。

0 个答案:

没有答案