Długie odpytywanie Zatrzymaj inne żądanie na 1 lub 2 minuty

Podczas tworzenia systemu czatu używam długiej prośby o życie, aby otrzymać wiadomość, i użyć żądania jquery, aby wysłać wiadomość w ten sposób:

*Wyślij: *

$("#btn").click(function () { 
    $.ajax({
        type: "POST",
        url: "Chat.aspx/Insert",
        data: "{ 'Str' :'" + $("#txtStr").val() + "' }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
        },
        error: function () {

        }
    });
});

Odbierz:

function Refresh() {

    $.ajax({
        type: "POST",
        url: "Chat.aspx/GetRecords",
        data: "{ 'Id' : " + $("#hdnV1").val() + "}",
        success: function (data) {

            $.each($(data.d), function () {

               //Show it to user

            });

        },
        complete: function () {
            return Refresh();
        },

        contentType: "application/json; charset=utf-8",
        dataType: "json",
        traditional: true,
        async: true
    });

}

a to jest mój kod po stronie serwera do pobierania wiadomości:

[WebMethod]
public static object GetRecords(int Id)
{
    TestEntities db = new TestEntities();
    int count = 0;
    while (true)
    {
        if (count++ >= 300)
            return null;


        System.Threading.Thread.Sleep(1000);
        var list = db.Commets.Where(rec => rec.Id > Id).Select(rec => new { Id = rec.Id, Str = rec.Str }).ToList();

        if (list.Count > 0)
            return list;

    }
}

Gdy użytkownik coś pisze i klika przycisk Wyślij, żądanie przechodzi do stanu oczekującego, a ja, ponieważ trwa żądanie długiej żywotności

Sprawdzam je w firebugu, czy jest ktoś, kto mi pomoże!?! Aby uzyskać więcej szczegółów, proszę o komentarz, i przepraszam za moją złą angielską składnię, jestem nowy w języku angielskim

Dzięki

questionAnswers(4)

yourAnswerToTheQuestion