0

我有一个装饰为 InstanceContextMode.Single 的 WCF (4.0) 服务,实现该服务的类遵循单例模式。

我首先使用 Instance 属性创建我的服务实现的单例实例。然后我将此单个实例传递给 ServiceHost 的构造函数,而不是使用带有 typeof() 参数的构造函数。

我可以在服务上执行 Open(),然后可以执行 Close(),一切都很好。但显然在 Close() 上,它以某种方式处理了我的单例 (???),因为当我在同一个 ServiceHost 上再次尝试 Open() 时,抛出了 ObjectDisposedException。

我的服务由 Windows 窗体应用程序中的 NetTcpBInding 托管。

4

1 回答 1

0

不支持重新打开同一个 ServiceHost。您需要创建一个新的 ServiceHost。

ServiceHost 实现 ICommunicationObject 状态机。从了解状态变化

当处于关闭状态时,对象基本上已经到达状态机的末尾。一旦一个对象从一个状态转换到下一个状态,它就不会回到之前的状态。

于 2013-01-22T06:38:41.533 回答