代码之家  ›  专栏  ›  技术社区  ›  Andy White

WCF自定义绑定/扩展导致app.config中的验证错误

wcf
  •  3
  • Andy White  · 技术社区  · 16 年前

    我很好奇是否有人知道如何解决这个问题:当我在WCF配置中添加bindingExtension或bindingElementExtension时,Visual Studio会抛出架构验证警告,因为扩展的名称不在system.serviceModel架构中:

    警告1元素“bindings”的子元素“nmsBinding”无效。预期的可能元素列表:“basicHttpBinding、customBinding、msmqIntegrationBinding、netPeerTcpBinding、netMsmqBinding、netNamedPipeBinding、netTcpBindings、wsFederationHttpBinding、ws2007FederationHttpBinding、ws2007HttpBinding、wsDualHttpBinding、mexHttpsBinding、mexNamedPipeBinding、mexCpBinding,webHttpBinding,netTcpContextBinding,wsHttpContextBinding,basicHttpContextBinding”。

    这可能是一个愚蠢的问题,但有没有一种方法可以在visualstudio中“动态”注册这些扩展,以便它们进行验证?我在想我可以在visual studio配置中的某个地方放置一个xsd,但如果有其他神奇的方法,我宁愿不这样做。

    以下是我的serviceModel配置:

    <system.serviceModel>
    
        <services>
            <service name="Zed.Apache.NMS.WCF.Test.Server.TestApacheNMSService">
                <endpoint
                    name="nmsServiceEndpoint"
                    address="tcp://localhost:61616"
                    binding="nmsBinding"
                    bindingConfiguration="defaultNmsBinding" 
                    contract="Zed.Apache.NMS.WCF.Test.Server.ITestApacheNMSService" />
            </service>
        </services>
    
        <bindings>
            <nmsBinding> <!-- VALIDATION ERROR HERE -->
                <binding name="defaultNmsBinding"
                         destination="TestApacheNMSQueue"
                         destinationType="Queue" />
            </nmsBinding>
        </bindings>
    
        <extensions>
            <bindingExtensions>
                <add name="nmsBinding"
                     type="Apache.NMS.WCF.NmsBindingCollection, Zed.Apache.NMS.WCF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
            </bindingExtensions>
        </extensions>
    
    </system.serviceModel>
    
    1 回复  |  直到 16 年前
        1
  •  3
  •   Jakob Christensen    16 年前

    我相信VS2008使用文件“C:\Program Files\Microsoft Visual Studio 9.0\xml\Schemas\DotNetConfig.xsd”(默认安装)来验证配置文件。您可以更改此文件或在配置文件的“属性”下指定另一个架构。

    然而,只要你只收到设计时的警告,可能不值得麻烦。

    推荐文章