2016-12-16 27 views
0

我創建了一個具有Datacontract和服務契約及其實現的類庫。然後我創建了一個控制檯應用程序來託管wcf服務。我在下面的app.config文件中定義了WCF設置。 <configuration> <system.serviceModel> <services> <service name="TestService.TestService" behaviorConfiguration="tcpbindingConfiguration"> <host> <baseAddresses> <add baseAddress="net:tcp://FullComputerName:9002/TestService"/> </baseAddresses> </host> <endpoint address="net:tcp://FullComputerName:9002/TestService" binding="netTcpBinding" contract="TestService.ITestServiceContract"></endpoint> <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"></endpoint> </service> </services> <behaviors> <serviceBehaviors> <behavior name="tcpbindingConfiguration"> <serviceMetadata httpGetEnabled="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> </startup> </configuration>無法找到與具有綁定的端點的端點模式net.tcp匹配的基地址MetadataExchangeTcpBinding自託管

然後我program.cs文件。

 ServiceHost sh = null; 

     try 
     { 
      sh = new ServiceHost(typeof(TestService.TestService)); 
      sh.Open(); 

      Console.WriteLine("Service started at net:tcp//FullComputerName:9002/TestService"); 
     } 
     catch (Exception ex) 
     { 
      sh = null; 
      Console.WriteLine("Service cann't started"); 
      throw; 
     } 

我已經激活了窗口功能的非HTTP的WCF打開和關閉。

我想在控制檯應用程序中託管此wcf服務,一些文章建議我需要在IIS中設置nettcp綁定。我爲什麼這樣做?

回答

0

IIS是您的WCF服務的替代託管,即您將其託管在控制檯應用程序或IIS中。據我所知,如果您使用控制檯應用程序,則不需要設置IIS。

嘗試將您的配置中的「net:tcp」更改爲「net.tcp」。

+0

仍在收到「無法找到與綁定MetadataExchangeTcpBinding的端點匹配scheme net.tcp的基地址,註冊的基地址方案爲[net]」。 – Rudra

+0

它的工作原理,然後我得到另一個錯誤,即「ServiceMetadataBehavior的HttpGetEnabled屬性設置爲true,HttpGetUrl屬性是一個相對地址,但沒有http基地址。提供http基地址或設置HttpGetUrl到絕對地址「。我通過從serviceMetadata屬性中除去httpGetEnabled =「true」來解決此問題。謝謝科裏。 – Rudra

相關問題