没有gui的WCF服务应用程序将保持活跃状态

时间:2013-03-17 13:17:57

标签: c# wcf

[WCF新手]
我有一个基本的客户端 - 服务器WCF项目 我的服务是“gui”较少的应用程序,这意味着我创建了winform应用程序,删除了Form1.cs和启动gui的行。
服务运行正常,我正在使用servicehost.open ..
我的问题是它是“串行”(同步),所以一秒钟后应用程序就存在了 如何让应用程序保持活跃并听取主机的声音? 我需要暂停进程,然后在我想结束时关闭host.close。 感谢

这是服务代码:

class Program
{
    public static Uri BaseAddress;
    [STAThread]
    static void Main(string[] args)
    {

        string baseAddressStr = "http://localhost:7000/someservice";
        BaseAddress = new Uri(baseAddressStr);
        using (ServiceHost host = new ServiceHost(typeof(MyClass)BaseAddress))
        {
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
            host.Description.Behaviors.Add(smb);

            host.Open();
            host.Close();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

我认为你不想在无窗口的WinForms应用程序中托管你的WCF服务。 如果您希望它无限期地保持打开状态,那么可以选择在Windows服务中托管WCF服务。 Here你有一个基本的样本。

好处应该是显而易见的:

  1. 即使没有用户登录也可以运行。
  2. 不需要解决方法来保持应用程序处于打开状态。
  3. 此外,您应该考虑将WCF配置(如基地址,服务行为)外部化到应用程序配置文件。每次配置中的某些(任何内容)发生变化时,您都不希望重建和重新部署服务,这可能因开发,测试,验收和生产环境而异。