我们最近将应用程序从.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中显式使用它,否则它不会受到尊重。
我想念什么?某些东西必须配置错误,但是我在这个问题上已经花了将近一个星期的时间,而且变得空白。
谢谢。