Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9032335
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 16, 20262026-06-16T07:57:28+00:00 2026-06-16T07:57:28+00:00

Eventually WCF duplex Silverlight 4 client start getting 404 Not Found errors for poll

  • 0

Eventually WCF duplex Silverlight 4 client start getting 404 Not Found errors for poll messages, immediately after poll was send from WCF service to Silverlight client, sometimes this happens for second poll sometimes connectivity works hours or even days, but mostly fails on first minutes.

! And what is interesting the issue is like known Silverlight 4 bug when using MaxMessagesPerPollduplex mode and solution is described here and here but I’m using SingleMessagePerPoll mode. ANyway I tried using ClientStack as suggested but nothing changed.

General flow:

  1. SL client executes WCF service method, received response
  2. Then immediately SL client start sending poll messages to service and then getting exception for second or N-s poll message

    System.Net.WebException: The remote server returned an error: NotFound

  3. Fiddler show only empty 404 response for a poll message
  4. Then client Channel Faulted event raised

I’m trying to reconnect SL client after such a fault, single reconnect retry flow:

  1. Handle Faulted event
  2. Unsubscribe all channel events like Closed/Closing/Opened/Opening
  3. Close channel in a right way using try { close } catch { abort }
  4. All below in a new thread poll thread:(I foudn this works slightly stable – see this article)
  5. Wait 45-70 seconds
  6. Using the same DuplexChannelFactory<T> instance create a new channel, subscribe to all channel events just for logging purposes
  7. Execute WCF service method

After 1-10 retries (~1-10 minutes) client eventually connect to a server and continue normal polling.

In WCF service log I see it get all cleint request, processed without any exception, so it seems something happens on Silverlight Client side.

General info:

  • .NET Framework 4.0
  • PollingDuplex
  • Async WCF methods
  • IIS 6.0 hosted WCF service
  • Silverligth 4 client
  • Client OS: Windows XP SP2
  • Server OS: Windows 2003 R2 SP2
  • NTLM Authentication
  • DuplexMode: SingleMessagePerPoll
  • There is an other WCF service which does Request/Reply before my service start working, it not uses Duplex connectivity
  • On SL client service I’m logging everything into the UI so see all events flow and have time for each particular event
  • No errors in IIS logs, server event logs

Client:

var binaryBinding = new BinaryMessageEncodingBindingElement();
binaryBinding.ReaderQuotas.MaxStringContentLength = int.MaxValue;

var httpbindingElement = new HttpTransportBindingElement
{
    MaxReceivedMessageSize = 131072
};

var pollingDuplexBindingElement = new PollingDuplexBindingElement
{
    ClientPollTimeout = new TimeSpan(0, 0, 1, 30),
    InactivityTimeout = new TimeSpan(0, 8, 0, 0),
};


_binding = new CustomBinding(
           pollingDuplexBindingElement,
           binaryBinding,
           httpbindingElement)
       {
           SendTimeout = new TimeSpan(0, 0, 0, 45),
           CloseTimeout = new TimeSpan(0, 0, 0, 25),
           ReceiveTimeout = new TimeSpan(0, 8, 0, 0),
           OpenTimeout = new TimeSpan(0, 0, 0, 45)
       };


httpbindingElement.AuthenticationScheme = AuthenticationSchemes.Negotiate;
var endpoint = new EndpointAddress(_endpointAddress);
_channelFactory = new DuplexChannelFactory<TWebService>(
                       new InstanceContext(instanceOfClientServiceClass), 
                       _binding, 
                       endpoint);


// then this factory used to create a new channels
// Also for a new channel I'm setting OpTimeout
var contextChannel = newChannel as IContextChannel;
if (contextChannel != null)
{
   contextChannel.OperationTimeout = TimeSpan.FromSeconds(45);
}

Server:

  • WCF, PerSession, multithreaded
  • Everything is thread safe
  • No server service exceptions while execution
  • A lot of logging so I see what is going on on a service
  • All WCF Traces are enabled with switchValue All, nothing suspicious
<binding name="customName"
             sendTimeout="00:01:00"
             receiveTimeout="08:00:00"
             openTimeout="00:01:00"
             closeTimeout="00:00:35">
     <pollingDuplex
         inactivityTimeout="08:00:00"
         serverPollTimeout="00:01:00" />
         <binaryMessageEncoding />
           <httpTransport authenticationScheme="Ntlm"
                          maxReceivedMessageSize="131072">              
         </httpTransport>
</binding>

<behavior name="customBehavior">
        <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        <serviceDebug includeExceptionDetailInFaults="true" />
        <serviceThrottling
             maxConcurrentCalls = "500"
             maxConcurrentSessions = "500"
             maxConcurrentInstances = "500" />
</behavior>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-16T07:57:29+00:00Added an answer on June 16, 2026 at 7:57 am

    While investigating issue described on this StackOverflow post Static constructor called twice for PerSession WCF service I found that Polling Duplex start working stable when I switched IIS configuration for underlying AppPool to use single worker process rather than 2 as was specified before. I’m not sure why 2 was set before since I do not own this server, but anyway this is what I have now – multiple Silverlight clients launched on the same machine works stable and polls polls polls and no 404 errors, all clients reconnects in 1 attempt after IIS restarts and recycles…

    See Performance Application Pool Settings for more details

    TL;DR:
    When IIS hosted WCF resides in AppPool which has more than one worker process – polling duplex becomes unstable. So in case of high load IIS started second process and start creating WCF service instances in second process as well, so I ran into situation when client session was created in one process but it seems poll sometimes reached an other process whcih is not aware of current connection/session so start refusing such messages and entire connection fault.

    So Polling Duplex by design is not scalable across multiple processes in scope of a single IIS server and AppPool, in other words if you have more than 1 worker process – this is WebGarden environment and duplex is not scalable across web farms and gardens

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

We have a WCF service (BasicHttpBinding) which will always fail after 30 seconds. Calls
I have a Windows program that calling a WCF service. This service after a
I have a VS2010 (RTM) solution which contains: WCF Service project Console WCF client
Assume that I have Silverlight app doing a call to a WCF service: void
I need to develop a WCF server (basically a web service which will eventually
I have a WCF webservice I can connect to it via basicHttp, but not
I created a minuscule WCF service as a proof of concept. I eventually want
If I use WCF getting a WSDL response or file is a piece of
I am a bit lost getting started with a simple WCF service. I have
I'm developing a client/server app in which the client calls the WCF service every

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.