我在夏普体系结构中使用Wcf。我使用WcfSessionStorage等配置了Northwind示例后的项目。我在wcf服务中有一个方法,它使用Repository <> .GetAll()获取业务对象列表。我正在使用WcfTestClient测试服务方法。当第一次调用该方法时,一切正常。然而在随后的电话,我得到下面的异常的存储库<> .GetAll()方法NHibernate会话在每次wcf服务方法调用时都被处理掉
[System.ObjectDisposedException]
Session is closed!
Object name: 'ISession'
好像NHibernate会话被每次通话后配置。我已经用下面的属性
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class WcfService : IWcfService
{
}
然而,这意味着,该服务的一个实例会在每次调用创建这反过来将创建一个新的NHibernate会话等。在我的场景装饰我的服务解决这个问题了没有必要为每个呼叫创建一个新的服务实例,我认为它是一个昂贵的过程,而不是正确的解决方案。我想知道我的方案中的最佳做法是什么,以及如何通过每次调用创建新的服务工作站来实现此目标。
感谢 纳比尔