concurrent requests - long running process status progress - chrome issue
<p>I tried to get status progress for long running operation. It works fine in FF:), Opera and IE:?, but in Chrome?! it fails: it never gets into ProcessRequest in Generic Handler. Please, could you suggest what I'm doing wrong? </p>

<p>default.aspx:</p>

<pre><code>&lt;%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="AspNetProgressBar._Default" %&gt;

&lt;asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"&gt;
&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;/asp:Content&gt;
&lt;asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"&gt;
    &lt;asp:Button runat="server" Text="Run" OnClick="button_Click" OnClientClick="button_start()"  /&gt;
...

&lt;script type="text/javascript"&gt;
    function button_start() {
        setInterval(function () {
            $.ajax({
                url: 'StatusHandler.ashx',
                data: { statusKeyId: '&lt;%= ViewState["key"] %&gt;' },
                type: 'post',
                dataType: 'json',
                success: function (json) {
                    ... process response
                },
                error: function () {

                }
            });
        }, 1000);
    }
&lt;/script&gt;
</code></pre>

<p>...</p>

<p>default.aspx.cs</p>

<pre><code>....
protected void button_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);
        for (int i = 0; i &lt; 10; ++i)
        {
            System.Threading.Thread.Sleep(500);
            // TODO: update progress status
        }
        // lblStatus.Text = "Done";
    }
</code></pre>

<p>StatusHandler.ashx.cs:</p>

<pre><code>public class StatusHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";

        string statusKeyId = context.Request.Params["statusKeyId"];
        if (statusKeyId != null)
        {
                System.Web.Script.Serialization.JavaScriptSerializer s = new System.Web.Script.Serialization.JavaScriptSerializer(GetStatusInfo(statusKeyId ));
                string output = s.Serialize(info);
                context.Response.Write(output);
                return;
        }
        context.Response.Write("{test: \"empty\"}");
    }
</code></pre>
