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