2013-04-20 124 views
0

我知道有很多關於這方面的問題,我試過它們,它不工作... 我在WS8上使用IIS8,將net.tcp添加到協議列表並結合808,我仍然得到這個錯誤:IIS WCF net.tcp綁定錯誤

System.InvalidOperationException: Could not find a base address that matches scheme net.tcp for the endpoint with binding NetTcpBinding. Registered base address schemes are [http]. 

我試圖用瀏覽器打開服務:http://192.168.1.101:64410/eve/relay/ClientRelayService.svc

我乳寧2個測試服務(一個是basichttp和其他應是tcp )在一個端口爲64410的站點上。其他服務正在按照應該工作。

這裏是我的服務器端配置:

<?xml version="1.0"?> 
<configuration> 
    <appSettings/> 
    <system.web> 
     <compilation debug="true" targetFramework="4.0"/> 
     <customErrors mode="Off"/> 
     <trust level="Full" /> 
     <httpRuntime/> 
    </system.web> 
    <system.serviceModel> 
     <bindings> 
      <netTcpBinding> 
       <binding name="tcpBinding" transferMode="Streamed" portSharingEnabled="true"> 
        <reliableSession enabled="true" /> 
        <security mode="None"> 
         <transport clientCredentialType="None" protectionLevel="None" /> 
         <message clientCredentialType="None" /> 
        </security> 
       </binding> 
      </netTcpBinding> 
     </bindings> 

     <services> 

      <service name="Eve.API.Services.Relay.RemoteRelayService"> 
       <host> 
        <baseAddresses> 
         <add baseAddress="http://localhost:64410/eve/relay/" /> 
        </baseAddresses> 
       </host> 
       <endpoint address="" binding="basicHttpBinding" contract="Eve.API.Services.Contracts.Services.Interfaces.IEveAPIService"/> 
       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
      </service> 

      <service name="Eve.API.Services.Relay.RelayService"> 
       <host> 
        <baseAddresses> 
         <add baseAddress="net.tcp://localhost:808/eve/relay/ClientRelayService.svc"/> 
        </baseAddresses> 
       </host> 
       <endpoint address="" binding="netTcpBinding" bindingConfiguration="tcpBinding" contract="Eve.API.Services.Contracts.Services.Interfaces.IRelayService"> 
        <identity> 
         <dns value="localhost" /> 
        </identity> 
       </endpoint> 
       <endpoint address="tcpmex" binding="mexTcpBinding" contract="IMetadataExchange"/> 
       <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>--> 
      </service> 

     </services> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior> 
        <!-- TODO Set to false on deploy --> 
        <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
        <serviceDebug includeExceptionDetailInFaults="true"/> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <protocolMapping> 
      <add binding="basicHttpsBinding" scheme="https"/> 
     </protocolMapping> 
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" minFreeMemoryPercentageToActivateService="1" multipleSiteBindingsEnabled="true"/> 
    </system.serviceModel> 
    <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"/> 
     <!-- TODO Set to false on deploy --> 
     <directoryBrowse enabled="true"/> 
    </system.webServer> 
</configuration> 
+0

有你嘗試更改NetTCP綁定的端口?我不是100%確定http和net.tcp可以通過IIS共享相同的端口。 – Tim 2013-04-21 04:04:52

回答

0

我會從服務與net.tcp綁定就可以去除基址,並定義地址明確的終點,就像

<endpoint address="net.tcp://localhost:808/eve/relay/ClientRelayService.svc" 
    binding="netTcpBinding" bindingConfiguration="tcpBinding" 
    contract="Eve.API.Services.Contracts.Services.Interfaces.IRelayService">