Brilliant, works everytime now. Thanks for your time and help Craig!

On 3 June, 15:11, Craig Neuwirt <[email protected]> wrote:
> Yes, so in this case, your service lifestyle should be transient and you
> should do a Kernel.ReleaseComponent in ReleaseInstance
>
> On Wed, Jun 3, 2009 at 9:07 AM, Andyk <[email protected]> wrote:
>
> > Thats correct.
> > One the first request everything is fine, session is opened in the
> > GetInstance, the wcfservice uses the session fine, then the
> > ReleaseInstance closes the session.
> > Upon execution of the 2nd request, a new session is created in the
> > GetInstance, and its properties show IsOpen=true.
> > But immediately breaking in the wcf service, the session.IsOpen=false.
>
> > Curiously I added a new guid to the customdependency in GetInstance,
> > and included it on wcf service constructor.
> > On the 2nd request, despite Getinstance generating a new guid and
> > inserting it into the customdependency object, the wcf service
> > received guid is still the origin.
>
> > So is the Resolve<T>(type, dependency) not using the latest dependency
> > collection?
>
> > On 3 June, 15:00, Craig Neuwirt <[email protected]> wrote:
> > > WCF Services are typically best handled as singletons
>
> > > On Wed, Jun 3, 2009 at 8:41 AM, Andyk <[email protected]>
> > wrote:
>
> > > > Or alternatively, should a wcf service have a specific lifestyle?
> > > > Maybe thats the issue.
>
> > > > On 3 June, 14:34, Andyk <[email protected]> wrote:
> > > > > Thats dont it, its working, fantastic.
>
> > > > > Does the dependency object need to be disposed in a certain way.
> > > > > Currently my ReleaseInstance method just calls session.close and then
> > > > > session=null
> > > > > However the session seems to permamently stay closed on any
> > subsequent
> > > > > requests?
>
> > > > > On 3 June, 13:07, Craig Neuwirt <[email protected]> wrote:
>
> > > > > > I think it would be more like
> > > > > >          session = sessionManager.OpenSession();
> > > > > >           Hashtable dependencies = new Hashtable();
> > > > > >           dependencies.Add("sessopm", session);
> > > > > >           return container.Resolve(serviceType.FullName,
> > dependencies);
>
> > > > > > This assumes the serviceType ctor has an argument called session of
> > > > type
> > > > > > ISession
>
> > > > > > On Wed, Jun 3, 2009 at 3:52 AM, Andyk <[email protected]
>
> > > > wrote:
>
> > > > > > > ok I did the following in the InstanceProvider:
>
> > > > > > >        public object GetInstance(InstanceContext instanceContext,
> > > > > > > Message message)
> > > > > > >        {
> > > > > > >            session = sessionManager.OpenSession();
> > > > > > >            Hashtable dependencies = new Hashtable();
> > > > > > >            dependencies.Add(NHibernateSessionKey,session);
> > > > > > >            container.AddComponentProperties<string, Hashtable>
> > > > > > > (NHibernateSessionKey, dependencies);
> > > > > > >            return container[serviceType.FullName];
> > > > > > >        }
>
> > > > > > > but my service still returns an exception, NHibernate.ISession
> > was
> > > > not
> > > > > > > registered.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to