2012-12-29 32 views
4

我想将http方案绑定从basicHttpBinding更改为wsHttpBinding。我知道我可以覆盖它到app.config。但是,这将需要更改所有受影响的WCF主机应用程序中的设置。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> 
+0

不要发布代码的屏幕快照。相反,发布代码。如果您不知道如何正确格式化代码,请单击格式工具栏右侧的大胖橙色问号。 – Charles

+0

编辑并移除屏幕抓图。 – Tilak

回答

1

我相信默认值在代码中实现的,而不是在config文件中,如果你看一下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

Defaults在machine.config中设置,如果它们不存在于machine.config中,可以在web.config/app.config中覆盖它,这可能是因为服务器未安装WCF Preinstalled。通常这将被安装和配置与IIS,但如果IIS没有安装或不被用来承载WCF那么WCF功能不会。

MSDN Link on the subject