我在夏普體系結構中使用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會話等。在我的場景裝飾我的服務解決這個問題了沒有必要爲每個呼叫創建一個新的服務實例,我認爲它是一個昂貴的過程,而不是正確的解決方案。我想知道我的方案中的最佳做法是什麼,以及如何通過每次調用創建新的服務工作站來實現此目標。
感謝 納比爾