WCF中默认协议映射存储在哪里?

4
我希望将basicHttpBindinghttp协议绑定更改为wsHttpBinding。我知道可以通过在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>

请勿发布代码的截图,而是直接发布代码。如果您不知道如何正确格式化代码,请单击格式工具栏右侧的大胖橙色问号。 - Charles
已编辑并删除了屏幕截图。 - Tilak
2个回答

1

我相信默认设置是在代码中实现的,而不是在.config文件中。如果您使用Reflector或等效工具查看ProtocolMappingSection Class,方法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", ""));
}

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

有关该主题的MSDN链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接