如何公开简单的控制台主机Web服务?

时间:2015-08-22 14:46:36

标签: c# asp.net wcf iis

我需要编写一个不会由iis =>托管的简单Web服务;所以我使用简单的控制台应用程序作为主机。

我创建了2个项目

1)包含IService.cd&的dll。 Service.cs
2)主机的控制台应用程序。

我的所有其他步骤与here

相同

但是当我运行我的应用程序时 - 当我将主机定义为IIS时,我无法从其他计算机上看到该服务。

如何解决?

配置文件:



<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment  aspNetCompatibilityEnabled="True"/>
    <services>
      <service name="CalcService.Calc" behaviorConfiguration="NewBehavior0">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9003/Calc"/>
            <add baseAddress="net.tcp://localhost:9002/Calc"/>
          </baseAddresses>
        </host>
        <endpoint address="http://localhost:9003/Calc" binding="basicHttpBinding" contract="CalcService.ICalc"/>
        <!--<endpoint address="net.tcp://localhost:9002/Calc" binding="netTcpBinding" contract="CalcService.ICalc"/>-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="NewBehavior0">
          <serviceMetadata httpGetEnabled="true"/> 
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
&#13;
&#13;
&#13;

static void Main(string[] args)
    {
        ServiceHost svcHost = null;
        try
        {
            svcHost = new ServiceHost(typeof(CalcService.Calc));
            svcHost.Open();
            Console.WriteLine("\n\nService is Running  at following address");

            Console.WriteLine("\nhttp://localhost:9001/Calc");
            Console.WriteLine("\nnet.tcp://localhost:9002/Calc");
        }
        catch(Exception eX)
        {
            svcHost = null;
            Console.WriteLine("Service can not be started \n\nError Message [" + eX.Message + "]");
        }

        if(svcHost != null)
        {
            Console.WriteLine("\nPress any key to close the Service");
            Console.ReadKey();
            svcHost.Close();
            svcHost = null;
        }       
    }

1 个答案:

答案 0 :(得分:1)

我建议您需要在app.config中传输控制台应用程序所在的所有配置。

您可以考虑以下链接来检查您的服务是否正常运行。

要添加多个端点,您可以点击MSDN

中的此链接