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

本文关键字:主机 web 服务 控制台 何公开 简单 | 更新日期: 2023-09-27 18:09:19

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

我创建了两个项目

1)包含IService的dll。光盘,Service.cs
2)控制台应用程序,将主机。

和其他步骤都和这里一样

但是当我运行我的应用程序时,我无法从其他机器看到服务,就像我将主机定义为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>

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;
        }       
    }

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

我建议你需要转移你的控制台应用程序所在的app.config中的所有配置。

你可以考虑下面的链接来检查你的服务是否正常工作。

    如何在应用程序上托管wcf服务器?
  • WCF-控制台托管
  • 在本地IIS 6上托管多个Wcf服务

要添加多个端点,您可以从MSDN访问此链接。