自定义绑定元素无法在IIS下的WCF中加载,但可以在WCF自主机下加载

时间:2011-05-09 16:32:59

标签: wcf iis-7 iis-express reliable-secure-profile

我能够运行MSFT WCF样本下载附带的WCF-SecureProfile示例(http://msdn.microsoft.com/en-us/library/ee818238.aspx

但是我无法将此服务器组件移植到IIS。我得到了错误 无法加载<MakeConnectionBindingElement/>。考虑到我已加载行为扩展,我不知道为什么IIS无法看到扩展名,但我的应用程序的自主版本可以。enter image description here

我将项目的源代码上传到codeplex中以便于浏览。这是直接link to web.config和所有其他文件。

enter image description here 2

1 个答案:

答案 0 :(得分:1)

我得到了示例并将其设置为在IIS本地运行。我没有得到与这个问题中的问题相同的问题,但我遇到了一个大问题。访问IIS中的服务给了我这个错误消息:

  

合同需要Duplex,但Binding'BasicHttpBinding'不支持它,或者没有正确配置以支持它。

经过一番头疼,我找到了这个问题的原因。 WCF 4现在为每个传输分配默认绑定(我喜欢这个功能更少和更少)。对于HTTP传输,默认绑定是basicHttpBinding。问题是customBinding配置覆盖任何默认绑定。这会导致WCF尝试在basicHttpBinding上配置双工,当然不支持。修复方法是关闭HTTP的默认传输映射并将其分配给您的自定义绑定,如下所示:此服务:

    <protocolMapping>
        <clear/> <!-- removes all defaults which you may or may not want. -->
        <!-- If not, use <remove scheme="http" /> -->
        <add scheme="http" binding="customBinding" bindingConfiguration="rspBinding"/>
    </protocolMapping>

一旦我将其添加到serviceModel元素,基于IIS的服务就可以正常工作。