On Tue, Jun 23, 2009 at 8:38 AM, Grant <[email protected]> wrote:

>
> Hi Craig,
>
> Thanks for teh reply. Yes I am using the trunk of the facility (and
> 2.0 of Castle Windsor). Indeed if I drectly create the service on the
> client using the ChannelFactory, everything works and that error does
> not occur. You can still see a bunch of
> CommunicationObjectAbortedException errors occurring in the background
> in the trace window (5 seconds after the call, coincidentally 5
> seconds being my receive timeout?). However at least the method
> invocation itself succeeds the next time.


That's strange since the wcf interceptor is just checking if the channel is
alive
and forwarding the request.


>
>
> Demo repro project updated here:
> http://www.kiwidude.com/WcfDemo.zip
>
> So, does it appear then that the WcfClient container stuff isn't
> really doing the job we need. Easily fixable or should we work around
> it using the ChannelFactory approach instead?
>

Not sure what the problem is, but if I can easily reproduce in test case it
should be
fixable.  I download your example when i get a chance and try it out

 And what is with all those exceptions in the trace window - is

> something not being closed properly or is it a .NET WCF thing?


I suspect WCF since the facility doesn't really get involvedm but WCF
is a mystery so you never know.



>
>
> Regards,
> Grant.
>
> On Jun 23, 2:10 pm, Craig Neuwirt <[email protected]> wrote:
> > Assuming you are using trunk of WCF Facility, the behavior of the proxy
> is
> > to first ensure that the channel is not closed or faulted.  If it is, it
> > will create a new channel.  If connection to the service host is lost for
> > some reason, but the channel still reports it is ok then you will get an
> > exception an the channel will be recreated the next time.
> >
> > Is it possible for you to do a test and just create a proxy directly from
> > the ChannelFactory and see if you get the same behavior?
> >
> > craig
> >
> >
> >
> > On Tue, Jun 23, 2009 at 4:50 AM, Grant <[email protected]> wrote:
> >
> > > The problem I am experiencing is that if I leave my WCF service host
> > > running idly for a period (beyond the binding receive timeout?) then I
> > > find that subsequent method invocations from the client can result in
> > > a stream of "CommunicationException" ,
> > > "CommunicationObjectAbortedException", "IOException" and
> > > "SocketException" messages occuring inside .NET. If I retry the
> > > activity then (most of the time) it will subsequently succeed.
> >
> > > It is as if the proxy instance that the Windsor WCF client returns is
> > > becoming invalid, but rather than silently destroying it and creating
> > > a new one it lets the error flow through and instead creates a new one
> > > one on the next request. Does that make any sense?
> >
> > > Is anyone out there actually using this facility in a production non-
> > > web application? The documentation is non-existent, the few examples I
> > > have seen are either web app based, out of date or too simple to be
> > > useful (as are the unit tests). I'm banging my head against the wall
> > > with this - it could be something really dumb I am doing in my usage
> > > but without relevant examples it is impossible to know. I'm very close
> > > to giving up on WCF and going back to "trusty" .NET remoting.
> >
> > > I have posted a small repro project showing how I register the service
> > > hosts and client which you can download from here:
> > >http://www.kiwidude.com/WcfDemo.zip
> >
> > > Here is an example exception stack trace of the exception...
> >
> > > System.ServiceModel.CommunicationException: The socket connection was
> > > aborted. This could be caused by an error processing your message or a
> > > receive timeout being exceeded by the remote host, or an underlying
> > > network resource issue. Local socket timeout was '00:10:00'. --->
> > > System.IO.IOException: The write operation failed, see inner
> > > exception. ---> System.ServiceModel.CommunicationException: The socket
> > > connection was aborted. This could be caused by an error processing
> > > your message or a receive timeout being exceeded by the remote host,
> > > or an underlying network resource issue. Local socket timeout was
> > > '00:10:00'. ---> System.Net.Sockets.SocketException: An existing
> > > connection was forcibly closed by the remote host
> > >   at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset,
> > > Int32 size, SocketFlags socketFlags)
> > >   at System.ServiceModel.Channels.SocketConnection.Write(Byte[]
> > > buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout)
> > >   --- End of inner exception stack trace ---
> > >   at System.ServiceModel.Channels.SocketConnection.Write(Byte[]
> > > buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout)
> > >   at System.ServiceModel.Channels.BufferedConnection.WriteNow(Byte[]
> > > buffer, Int32 offset, Int32 size, TimeSpan timeout, BufferManager
> > > bufferManager)
> > >   at System.ServiceModel.Channels.BufferedConnection.Write(Byte[]
> > > buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout)
> > >   at System.ServiceModel.Channels.ConnectionStream.Write(Byte[]
> > > buffer, Int32 offset, Int32 count)
> > >   at System.Net.Security.NegotiateStream.StartWriting(Byte[] buffer,
> > > Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
> > >   at System.Net.Security.NegotiateStream.ProcessWrite(Byte[] buffer,
> > > Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
> > >   --- End of inner exception stack trace ---
> > >   at System.Net.Security.NegotiateStream.ProcessWrite(Byte[] buffer,
> > > Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
> > >   at System.Net.Security.NegotiateStream.Write(Byte[] buffer, Int32
> > > offset, Int32 count)
> > >   at System.ServiceModel.Channels.StreamConnection.Write(Byte[]
> > > buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout)
> > >   --- End of inner exception stack trace ---
> >
> > > Server stack trace:
> > >   at System.ServiceModel.Channels.StreamConnection.Write(Byte[]
> > > buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout)
> > >   at System.ServiceModel.Channels.StreamConnection.Write(Byte[]
> > > buffer, Int32 offset, Int32 size, Boolean immediate, TimeSpan timeout,
> > > BufferManager bufferManager)
> > >   at System.ServiceModel.Channels.FramingDuplexSessionChannel.OnSend
> > > (Message message, TimeSpan timeout)
> > >   at System.ServiceModel.Channels.OutputChannel.Send(Message message,
> > > TimeSpan timeout)
> > >   at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request
> > > (Message message, TimeSpan timeout)
> > >   at System.ServiceModel.Channels.ServiceChannel.Call(String action,
> > > Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object
> > > [] outs, TimeSpan timeout)
> > >   at System.ServiceModel.Channels.ServiceChannel.Call(String action,
> > > Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object
> > > [] outs)
> > >   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService
> > > (IMethodCallMessage methodCall, ProxyOperationRuntime operation)
> > >   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage
> > > message)
> >
> > > Exception rethrown at [0]:
> > >   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage
> > > (IMessage reqMsg, IMessage retMsg)
> > >   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke
> > > (MessageData& msgData, Int32 type)
> > >   at WcfDemo.Common.Interfaces.IFooService.GetFooStuff()
> > >   at
> >
> > >
> IFooServiceProxy2a1d2ae2b1bc4e319a4a501297fcaa83.InvocationGetFooStuff_79.IĀ­nvokeMethodOnTarget
> > > ()
> > >   at Castle.DynamicProxy.AbstractInvocation.Proceed()
> > >   at
> > > Castle.Facilities.WcfIntegration.WcfManagedChannelInterceptor.Intercept
> > > (IInvocation invocation)
> > >   at Castle.DynamicProxy.AbstractInvocation.Proceed()
> > >   at IFooServiceProxy2a1d2ae2b1bc4e319a4a501297fcaa83.GetFooStuff()
> > >   at WcfDemo.WinClient.MainForm.OnCallFooButtonClick(Object sender,
> > > EventArgs e) in C:\Dev\Misc\WcfDemo\WcfDemo.WinClient\MainForm.cs:line
> > > 23- Hide quoted text -
> >
> > - Show quoted text -
> >
>

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