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

本文关键字:活跃 应用程序 服务 gui WCF 没有 | 更新日期: 2023-09-27 18:04:25

[WCF newbie]
我有一个基本的客户机-服务器WCF项目。
我的服务是"gui"较少的应用程序,这意味着我创建了winform应用程序,删除了form .cs和启动gui的行。
服务运行正常,我正在使用servicehost.open.
我的问题是它是"串行"(同步),所以一秒钟后应用程序存在。
如何使应用程序保持活动状态并侦听主机?
我需要停止这个进程,然后托管。当我想结束这一切的时候。由于

服务代码:

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

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

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

好处应该是显而易见的:

  1. 可以在没有用户登录的情况下运行
  2. 不需要解决方法来保持应用程序打开

另外,您应该考虑将您的WCF配置(如基址、服务行为)外部化到应用程序配置文件中。您不希望每次配置发生变化(可能因开发、测试、验收和生产环境而异)时都重新构建和重新部署服务。