Alexnaldo Santos

Hi,

Does anybody know how to solve error about "There was no space available in the reliable channel's transfer window"

My architecture is :

1)One Service ( PerSession with Callback ) using "security=message" and Self Hosted.
2)One Client that receive events notification from Service

I don't know why, but frequently I see errors about "timeout" on both side. I'm not transfering any data more than 32Kb and in the both side the internet is fast.

In both side, after receive a message, I create a new WorkThread, so the WCF can sent a response as fast as possible.

If I disable security (i.e "security=none") I don't receive any timeout !

My questions are :

1) Is it possible the "CA" of my certificate slow my communication
2) Does WCF verify my certificate in the "CA" for each service call even using "PerSession"

Here's the stack of service :

- <E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">

- <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>131075</EventID>
<Type>3</Type>
<SubType Name="Error">0</SubType>
<Level>2</Level>
<TimeCreated SystemTime="2007-01-31T12:37:23.1729926Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{e6b18916-cc62-49b3-b95b-479c7a912d49}" />
<Execution ProcessName="EndoServer" ProcessID="1792" ThreadID="74" />
<Channel />
<Computer>DED1012</Computer>
</System>
- <ApplicationData>
- <TraceData>
- <DataItem>
- <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Error">
<TraceIdentifier>http://msdn.microsoft.com/en-US/library/System.ServiceModel.Diagnostics.ThrowingException.aspx</TraceIdentifier>
<Description>Throwing an exception.</Description>
<AppDomain>netwatts.com.br</AppDomain>
- <Exception>
<ExceptionType>System.TimeoutException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
<Message>The message could not be transferred within the allotted timeout of 00:01:00. There was no space available in the reliable channel's transfer window. The time allotted to this operation may have been a portion of a longer timeout.</Message>
<StackTrace>at System.ServiceModel.Channels.TransmissionStrategy.WaitQueueAdder.Wait(TimeSpan timeout) at System.ServiceModel.Channels.TransmissionStrategy.InternalAdd(Message message, Boolean isLast, TimeSpan timeout, Object state, MessageAttemptInfo&amp; attemptInfo) at System.ServiceModel.Channels.TransmissionStrategy.Add(Message message, TimeSpan timeout, Object state, MessageAttemptInfo&amp; attemptInfo) at System.ServiceModel.Channels.ReliableOutputConnection.InternalAddMessage(Message message, TimeSpan timeout, Object state, Boolean isLast) at System.ServiceModel.Channels.ReliableOutputConnection.AddMessage(Message message, TimeSpan timeout, Object state) at System.ServiceModel.Channels.ReliableDuplexSessionChannel.OnSend(Message message, TimeSpan timeout) at System.ServiceModel.Channels.DuplexChannel.Send(Message message, TimeSpan timeout) at System.ServiceModel.Dispatcher.DuplexChannelBinder.Send(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) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&amp; msgData, Int32 type) at Netwatts.suNET.Common.Services.IOperatorCallback.MessageReceived(UserSession userSession, ChatMessage chatMessage) at Netwatts.suNET.Common.Business.OperatorSession.OneWayMethod[T](CallbackMessageEventArgs`1 eventArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]&amp; outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]&amp; outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink) at System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(Object o) at System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)</StackTrace>
<ExceptionString>System.TimeoutException: The message could not be transferred within the allotted timeout of 00:01:00. There was no space available in the reliable channel's transfer window. The time allotted to this operation may have been a portion of a longer timeout.</ExceptionString>
</Exception>
</TraceRecord>
</DataItem>
</TraceData>
- <System.Diagnostics xmlns="http://schemas.microsoft.com/2004/08/System.Diagnostics">
<Timestamp>3162660867781674</Timestamp>
<Callstack>at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at System.Diagnostics.TraceEventCache.get_Callstack() at System.Diagnostics.XmlWriterTraceListener.WriteFooter(TraceEventCache eventCache) at System.Diagnostics.XmlWriterTraceListener.TraceData(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, Object data) at System.Diagnostics.TraceSource.TraceData(TraceEventType eventType, Int32 id, Object data) at System.ServiceModel.Diagnostics.DiagnosticTrace.TraceEvent(TraceEventType type, TraceCode code, String description, TraceRecord trace, Exception exception, Object source) at System.ServiceModel.Diagnostics.ExceptionUtility.ThrowHelper(Exception exception, TraceEventType eventType, TraceRecord extendedData) at System.ServiceModel.Diagnostics.ExceptionUtility.ThrowHelperError(Exception exception) at System.ServiceModel.Channels.TransmissionStrategy.WaitQueueAdder.Wait(TimeSpan timeout) at System.ServiceModel.Channels.TransmissionStrategy.InternalAdd(Message message, Boolean isLast, TimeSpan timeout, Object state, MessageAttemptInfo& attemptInfo) at System.ServiceModel.Channels.TransmissionStrategy.Add(Message message, TimeSpan timeout, Object state, MessageAttemptInfo& attemptInfo) at System.ServiceModel.Channels.ReliableOutputConnection.InternalAddMessage(Message message, TimeSpan timeout, Object state, Boolean isLast) at System.ServiceModel.Channels.ReliableOutputConnection.AddMessage(Message message, TimeSpan timeout, Object state) at System.ServiceModel.Channels.ReliableDuplexSessionChannel.OnSend(Message message, TimeSpan timeout) at System.ServiceModel.Channels.DuplexChannel.Send(Message message, TimeSpan timeout) at System.ServiceModel.Dispatcher.DuplexChannelBinder.Send(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) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Netwatts.suNET.Common.Services.IOperatorCallback.MessageReceived(UserSession userSession, ChatMessage chatMessage) at Netwatts.suNET.Common.Business.OperatorSession.OneWayMethod[T](CallbackMessageEventArgs`1 eventArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink) at System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(Object o) at System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(Object state) at System.Threading.ExecutionContext.runTryCode(Object userData) at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)</Callstack>
</System.Diagnostics>
</ApplicationData>
</E2ETraceEvent>


Re: Windows Communication Foundation (Indigo) Reliable channel's transfer window

jyotsnav

The messages stay in the reliable channel transfer window until they are acknowledged. It seems like in your scenario these acknowledgements are arriving slowly when security is On. Also, I beleive it does not contact the CA per call if cert has been issued by a trusted store CA. Are you hitting these timeouts early on in the message transfer process I would try increasing the SendTimeout on the binding on both sides.

example:

binding.SendTimeout = TimeSpan.FromMinutes(3);





Re: Windows Communication Foundation (Indigo) Reliable channel's transfer window

Alexnaldo Santos

Hi,

After incresing the SendTimeout all work fine....but I will disable the security because it slow my service.





Re: Windows Communication Foundation (Indigo) Reliable channel's transfer window

KevinBurton

Our timeout is already set to 10 minutes. What is the timeout

<binding name="tcpBinding"

closeTimeout="00:10:00"

openTimeout="00:10:00"

receiveTimeout="12:00:00"

sendTimeout="00:10:00"

transactionFlow="false"

transferMode="Buffered"

transactionProtocol="OleTransactions"

hostNameComparisonMode="StrongWildcard"

listenBacklog="10"

maxBufferPoolSize="10000000"

maxBufferSize="10000000"

maxConnections="10"

maxReceivedMessageSize="10000000">

How should I "disable security" The current configuration looks like:

<security mode="Transport">

<transport clientCredentialType="Windows"

protectionLevel="EncryptAndSign"/>

I am not sure what the options are.

Thank you.

Kevin





Re: Windows Communication Foundation (Indigo) Reliable channel's transfer window

Alexnaldo Santos

to disable security :

<security mode="None">