2010-12-10 65 views
3

我想使用netTcpBinding和basicHttpBinding提供相同的接口。我也想为两个端点提供wsdl。当我访问http://localhost:9876/TestService/时,我得到的mex端点具有Tcp端点的信息http://localhost:9876/TestService/?wsdl,但地址http://localhost:9876/TestService/ws没有响应,我不明白为什么。我有基地址和相对地址。有人能帮我指出缺少的东西吗?现在,我只是试图让TestImplementation服务工作,并且我没有与MessaginImplementation服务混淆。带有basicHttpBinding和netTcpBinding的WCF服务;无法访问HTTP端点

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="SimpleBinding" /> 
      </basicHttpBinding> 
      <netTcpBinding> 
       <binding name="DefaultTCPBinding" transactionFlow="true" /> 
      </netTcpBinding> 
     </bindings> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior name="MetadataBehavior"> 
        <serviceMetadata httpGetEnabled="true" httpGetBinding="webHttpBinding" 
         httpGetBindingConfiguration="" /> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <services> 
      <service behaviorConfiguration="MetadataBehavior" name="CompanyX.AppServer.Implementation.TestImplementation"> 
       <endpoint address="" binding="netTcpBinding" bindingConfiguration="DefaultTCPBinding" 
        name="TestTCPEndpoint" contract="CompanyX.AppServer.Interfaces.ITest" /> 
       <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" 
        name="TestMex" contract="IMetadataExchange" /> 
       <endpoint address="/ws" binding="basicHttpBinding" bindingConfiguration="SimpleBinding" 
        name="Test" contract="CompanyX.AppServer.Interfaces.ITest" /> 
       <host> 
        <baseAddresses> 
         <add baseAddress="net.tcp://localhost:9878/TestService" /> 
         <add baseAddress="http://localhost:9876/TestService/" /> 
        </baseAddresses> 
       </host> 
      </service> 
      <service behaviorConfiguration="MetadataBehavior" name="CompanyX.AppServer.Implementation.MessaginImplementation"> 
       <endpoint address="" binding="netTcpBinding" bindingConfiguration="DefaultTCPBinding" 
        name="MessagingTCPEndpoint" contract="CompanyX.AppServer.Interfaces.IMessaging" /> 
       <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" 
        name="MessagingMex" contract="CompanyX.AppServer.Interfaces.IMessaging" /> 
       <host> 
        <baseAddresses> 
         <add baseAddress="net.tcp://localhost:9878/MessagingService" /> 
         <add baseAddress="http://localhost:9876/MessagingService" /> 
        </baseAddresses> 
       </host> 
      </service> 
     </services> 
    </system.serviceModel> 
</configuration> 

回答

1

这是我的一个菜鸟错误。这其实是正确的。答案在the post below。 当我打到基本的HTTP类时,我只收到来自浏览器的响应,但使用此wsdl,我可以连接两个绑定。

0

我怀疑你的服务端点地址是错误的:

<endpoint address="/ws" binding="basicHttpBinding" bindingConfiguration="SimpleBinding" 
       name="Test" contract="CompanyX.AppServer.Interfaces.ITest" /> 

因为它是一个相对地址(添加到您的基地址),应该只是ws - 没有领先斜线:

<endpoint name="Test" 
      address="ws" 
      binding="basicHttpBinding" bindingConfiguration="SimpleBinding" 
      contract="CompanyX.AppServer.Interfaces.ITest" /> 

尝试它没有正斜杠!应该以这种方式工作。

+0

我试过没有它,但我没有得到答案。我从这个微软链接得到了这个:http://msdn.microsoft.com/en-us/library/ms733749.aspx – Pascal 2010-12-10 21:39:09

+0

@Pascal:不知道你的基地址中的尾部斜线是否会导致一个问题:'' - 尝试没有它 - 任何改变? – 2010-12-10 22:20:31

+0

抱歉浪费你的时间。这是一个新秀WCF的错误。我发布了下面的答案,以供将来参考任何与我未来相同的疑问。谢谢你太多了! – Pascal 2010-12-11 02:21:30

相关问题