我想将http
方案绑定从basicHttpBinding
更改为wsHttpBinding
。我知道我可以将其覆盖到app.config
。但这需要更改受影响的所有WCF主机应用程序中的设置。
我也找不到machine.config中的协议映射部分。
默认的protol映射如下。
<protolMapping>
<add scheme ="http" binding="basicHttpBinding" bindingConfiguration="" />
<add scheme ="tcp" binding="netTcpBinding" bindingConfiguration="" />
..
</protocolMapping>
改变后应该看起来像。
<protolMapping>
<add scheme ="http" binding="wsHttpBinding" bindingConfiguration="" />
<add scheme ="tcp" binding="netTcpBinding" bindingConfiguration="" />
..
</protocolMapping>
答案 0 :(得分:1)
我相信默认值是在代码中实现的,而不是在.config文件中实现,如果你使用Reflector等工具查看ProtocolMappingSection Class方法InitializeDefault,你会看到:< / p>
protected override void InitializeDefault()
{
this.ProtocolMappingCollection.Add(new ProtocolMappingElement("http", "basicHttpBinding", ""));
this.ProtocolMappingCollection.Add(new ProtocolMappingElement("net.tcp", "netTcpBinding", ""));
this.ProtocolMappingCollection.Add(new ProtocolMappingElement("net.pipe", "netNamedPipeBinding", ""));
this.ProtocolMappingCollection.Add(new ProtocolMappingElement("net.msmq", "netMsmqBinding", ""));
}
答案 1 :(得分:1)
默认值在machine.config中设置,如果在machine.config中不存在,则可以在web.config / app.config中覆盖。这可能是因为服务器未设置WCF预安装。通常,这将使用IIS进行安装和配置,但如果未安装IIS或未用于托管WCF,则WCF功能将不会。