I have a Silverlight client which tries to create a session but the server doesn't respond (the client throws a timeout exception). In the server log I've found:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>0</EventID>
<Type>3</Type>
<SubType Name="Warning">0</SubType>
<Level>4</Level>
<TimeCreated SystemTime="2011-03-01T15:47:17.3951653Z" />
<Source Name="System.ServiceModel.PollingDuplex" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<Execution ProcessName="w3wp" ProcessID="3820" ThreadID="17" />
<Channel />
<Computer>VM662</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Warning">
<TraceIdentifier>http://msdn.microsoft.com/ru-RU/library/System.ServiceModel.PollingDuplex.ListenerClosed.aspx</TraceIdentifier>
<Description>The service no longer accepts new sessions. An http error was returned.</Description>
<AppDomain>/LM/W3SVC/1/ROOT-1-129434680323302677</AppDomain>
<Source>System.ServiceModel.Channels.PollingDuplexChannelListener/40535505</Source>
<ExtendedData xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/PollingDuplexTraceRecord">
<clientAddress>http://docs.oasis-open.org/ws-rx/wsmc/200702/anonymous?id=1a9b0998-7fa0-4c53-8268-d4db5e8fad61</clientAddress>
<serverAddress>http://porn.com/getgirls.svc</serverAddress>
<sessionId>3d21efa1-1204-433a-8881-06cd6da7de60</sessionId>
<HttpStatusCode>NotFound</HttpStatusCode>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
<System.Diagnostics xmlns="http://schemas.microsoft.com/2004/08/System.Diagnostics">
<LogicalOperationStack></LogicalOperationStack>
<Timestamp>2545401989404</Timestamp>
</System.Diagnostics>
</ApplicationData>
</E2ETraceEvent>
What does it mean? Why does the WCF service with polling duplex binding can't "accepts new sessions"?
UPDATE: Server has about 20 concurrent session requests and most of them were failed. But when I started another test run, all is ok. This issue occurs from time to time, restarting the server usually resolve this problem. Server configuration:
<system.diagnostics>
<sources>
<source name="System.ServiceModel.PollingDuplex" switchValue="Information">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default"/>
<add name="ServiceModelTraceListener" />
<add name="ServiceModelMessageLoggingListener" />
</listeners>
</source>
<!--<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default"/>
<add name="ServiceModelMessageLoggingListener"/>
</listeners>
</source>
<source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default"/>
<add name="ServiceModelTraceListener"/>
</listeners>
</source>-->
</sources>
<sharedListeners>
<add initializeData="c:\pdt_logs\messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp" />
<add initializeData="c:\pdt_logs\web_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
<system.web>
<compilation targetFramework="4.0" />
</system.web>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
<extensions>
<bindingElementExtensions>
<add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexElement, System.ServiceModel.PollingDuplex, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingElementExtensions>
</extensions>
<bindings>
<customBinding>
<binding name="PollingDuplexBinding" >
<binaryMessageEncoding>
<readerQuotas maxArrayLength="16777216" maxBytesPerRead="16777216" maxDepth="16777216"
maxNameTableCharCount="16777216" maxStringContentLength="16777216"/>
</binaryMessageEncoding>
<pollingDuplex maxPendingSessions="100"
maxPendingMessagesPerSession="250" inactivityTimeout="24.20:31:23.6470000"/>
<httpTransport maxBufferSize="16777216"
maxReceivedMessageSize="16777216" />
</binding>
</customBinding>
</bindings>
<services>
<service name="PollingDuplexApplication.Services.TestService" behaviorConfiguration="ServiceBehavior">
<endpoint address=""
binding="customBinding"
contract="PollingDuplexApplication.Services.TestService"
bindingConfiguration="PollingDuplexBinding">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling maxConcurrentCalls="2048" maxConcurrentSessions="2048" maxConcurrentInstances="2048"/>
<dataContractSerializer maxItemsInObjectGraph="16777216"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
What polling duplex mode are you using ? I have encountered a similar problem where the server was having problems with multiple messages.
The solution was to change my PollingDuplexMode to SingleMessagePerPoll. It seems WCF has some problems with MultipleMessagesPerPoll.
You can change the mode while constructing the Binding:
Or in the config file.