1

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

1 回答 1

2

我认为您不想在无窗口 WinForms 应用程序中托管 WCF 服务。如果您希望它无限期地保持打开状态,则可以在 Windows 服务中托管 WCF 服务。在这里,您有一个基本示例。

好处应该是显而易见的:

  1. 即使没有用户登录也可以运行。
  2. 不需要解决方法来保持应用程序打开。

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

于 2013-03-17T13:31:06.257 回答