我需要在单个服务器上安装WCF服务,但我需要监听多个端口(由于运行客户端的计算机存在各种问题)。我不清楚是否可以使用一个ServiceHost
和一个"类来自"(CDF)ServiceBase
并且有endpoints
,或者如果我需要两个CDF ServiceBase
,每个都有一个endpoint
。以下是相关文件中的相关代码:
Program.cs的
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
}
Service1.cs
public partial class Service1 : ServiceBase
{
private wcfServer _server;
ServiceHost serviceHost;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(String[] args)
{
_server = new wcfServer();
serviceHost = new ServiceHost(_server);
serviceHost.Open();
}
protected override void OnStop()
{
if (serviceHost != null)
serviceHost.Close();
}
}
wcfServer.cs
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode=ConcurrencyMode.Multiple)]
public class wcfServer : IwcfServer { /* ... */ }
的app.config
<services>
<service name="MyService.wcfServer">
<endpoint address=""
bindingConfiguration="BigDataBinding"
binding="basicHttpBinding"
contract="DataBackups.IwcfServer">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/DataBackups/wcfServer/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
我应该注意到
有人可以举例说明如何实现这一目标吗?
另外,我不明白<service>
中的app.config
配置与以编程方式创建的CDF ServiceBase
实例的关系。在当前设置中,Service1
中只有一个app.config
实例和一个配置,所以我想他们会排队等候。&#34;但是,如果我有多个Service1
实例(我可能需要),该怎么办?我如何选择&#34;我正在配置哪些服务?
答案 0 :(得分:0)
您的WCF
服务在多个端口上应该没有问题。您只需要展开{{1}}文件的baseAddress
部分,如下所示:
app.config