4

我想将http方案绑定从更改basicHttpBindingwsHttpBinding. 我知道我可以将它覆盖到app.config. 但这需要更改所有受影响的 WCF 主机应用程序中的设置。

我也找不到 machine.config 中的协议映射部分。

默认协议映射如下。

<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>
4

2 回答 2

1

默认值在 machine.config 中设置,如果它们在 machine.config 中不存在,则可以在 web.config / app.config 中覆盖,这可能是因为服务器未设置 WCF 预安装。通常这将使用 IIS 安装和配置,但如果 IIS 未安装或未用于托管 WCF,则不会使用 WCF 功能。

有关该主题的 MSDN 链接

于 2015-03-28T10:29:41.367 回答
1

我相信默认值是在代码中实现的,而不是在 .config 文件中,如果您使用 Reflector 或等效工具查看ProtocolMappingSection 类、方法InitializeDefault,您会看到:

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", ""));
}
于 2012-12-30T07:25:12.307 回答