如何公开简单的控制台主机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;
}
}
我建议你需要转移你的控制台应用程序所在的app.config中的所有配置。
你可以考虑下面的链接来检查你的服务是否正常工作。
- 如何在应用程序上托管wcf服务器?
- WCF-控制台托管
- 在本地IIS 6上托管多个Wcf服务
要添加多个端点,您可以从MSDN访问此链接。