Would it be possible to create a test case for this?

On Tue, Jun 2, 2009 at 10:16 AM, AndyKnight <[email protected]>wrote:

>
> Hi all,
> Im trying to get the two facilities, WCFIntegration and
> NHibernateIntegration working together so that I can get one session
> per wcf request. And I think I'm almost there, just one final hurdle
> Im suffering with.
>
> So Ive setup an SessionEndpointBehavior class which has
> ISessionManager and IKernel dependencies. It generates a
> SessionInstanceProvider like so:
>        public void ApplyDispatchBehavior(ServiceEndpoint endpoint,
> EndpointDispatcher endpointDispatcher)
>        {
>            Type serviceType =
> endpointDispatcher.ChannelDispatcher.Host.Description.ServiceType;
>            endpointDispatcher.DispatchRuntime.InstanceProvider = new
> SessionInstanceProvider(serviceType, sessionManager, kernel);
>        }
>
> SessionInstanceProvider implements IInstanceProvider and has the
> following GetInstance method:
>
>        public object GetInstance(InstanceContext instanceContext,
> Message message)
>        {
>            session = sessionManager.OpenSession();
>            kernel.AddComponentInstance(NHibernateSessionKey,typeof
> (ISession),session);
>
>            return kernel[serviceType.FullName];
>        }
>
> And lastly, Ive added the SessionEndpointBehaviour as a component in
> my web.config. WindsorContainer is initialised in the global.asax
> file.
> The Wcf service markup references
> Castle.Facilities.WcfIntegration.DefaultServiceHostFactory and the
> class has an ISession dependency in the constructor.
>
> Everything works, Getinstance() is called and a session is put into
> the kernel.
> However, my wcf service cant find the ISession dependency:
>
> Can't create component 'WCFHost.TestService' as it has dependencies to
> be satisfied.
> WCFHost.TestService is waiting for the following dependencies:
>
> Services:
> - NHibernate.ISession which was not registered.
>
>
> I see that SessionManager.OpenSession() returns a SessionDelegate
> instance, but this implements ISession, so I dont understand why its
> failing.
>
> Im assuming that when I provide IKernel as a dependency to
> SessionEndpointBehavior, castle is using the currently instantiated
> windsor container, is that correct?
>
> Any suggestions appreciated
>
> Andy
> >
>

--~--~---------~--~----~------------~-------~--~----~
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