默认协议映射存储在WCF中的哪个位置

时间:2012-12-29 19:40:46

标签: .net wcf wcf-binding

我想将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>

2 个答案:

答案 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功能将不会。

MSDN Link on the subject