无法找到与具有绑定MetadataExchangeTcpBinding自托管的端点的scheme net.tcp匹配的基址

时间:2016-12-16 07:53:44

标签: c# .net wcf

我创建了一个具有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>

之下

然后我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;
        } 

我已经开启和关闭Windows功能的非HTTP WCF。

我想在控制台应用程序中托管这个wcf服务,有些文章建议我需要在IIS中设置nettcp绑定。为什么我这样做?

1 个答案:

答案 0 :(得分:0)

IIS是您的WCF服务的替代托管,即您可以在控制台应用程序或IIS中托管它。据我所知,如果您使用控制台应用程序,则不需要设置IIS。

尝试更改&#34; net:tcp&#34;在你的配置中&#34; net.tcp&#34;。