using BeWo.Data; using System; using System.Collections.Generic; using System.Linq; using System.ServiceModel; using System.ServiceModel.Channels; using System.ServiceModel.Dispatcher; using System.Text; using System.Threading.Tasks; namespace BeWo.Service.ServiceBehavior { public class AdminHibernateContextInitializer : ICallContextInitializer { public void AfterInvoke(object pCorrelationState) { if (pCorrelationState != null) { WCFHibernateSessionManager.CloseSession(); OperationContext.Current.Extensions.Remove((SessionOperationContextExt)pCorrelationState); } } public object BeforeInvoke(InstanceContext pInstanceContext, IClientChannel pChannel, Message pMessage) { if (MultitenancyOperationContextExt.Current?.Tenant is null) return null; try { //System.Threading.Monitor.Enter SessionOperationContextExt lExt = new SessionOperationContextExt(); //int c = OperationContext.Current.Extensions.Count; //if (c > 0) //{ // int te st = 0; //} OperationContext.Current.Extensions.Add(lExt); WCFHibernateSessionManager.OpenSession(); return lExt; } catch (Exception e) { throw new FaultException(e.ToString()); return null; } } } }