我有一个 WCF (4.0) 服务,它被装饰为 InstanceContextMode.Single,实现该服务的类遵循 Singleton 模式。
我首先使用 Instance 属性创建服务实现的单一实例。然后我将这个单个实例传递给ServiceHost的构造函数,而不是使用带有typeof()参数的构造函数。
我可以在服务上做 Open(),然后我可以做 Close(),一切都很好。但显然在 Close() 上,它以某种方式处理了我的单例 (???),因为当我在同一服务主机上再次尝试 Open() 时,抛出了 ObjectDisposedException。
我的服务在 Windows 窗体应用程序中使用 NetTcpBInding 托管。
不支持重新打开同一服务主机。您需要创建新的服务主机。
ServiceHost 实现 ICommunicationObject 状态机。从了解状态更改:
当处于"已关闭"状态时,对象基本上已到达 状态机。一旦对象从一种状态转换到 接下来,它不会返回到以前的状态。