2015-03-24 2 views
1

Я нашел несколько ответов, включая this one, а также this one. Но почему-то this.Response.IsClientConnected по-прежнему идет как true.Как отменить длительный Ajax-запрос в .net MVC 4?

Вот мой клиент:

<div class="ajax-loader-gif-close" id="cancelBusy">Close</div> 

@using (Html.BeginForm("List", "Visit", FormMethod.Post, new { @id = "formFilter" })) 
    { 
     //Some models some TextBoxFor etc. 
    } 

<script type="text/javascript" language="javascript"> 
    var ajaxCallObject = null; 

    $(document).ready(function() { 
     $('form').submit(function() { 
       ajaxCallObject = $.ajax({ 
        url: this.action, 
        type: this.method, 
        data: $(this).serialize(), 
        beforeSend: function() { 
         toggleBusyIndicator(); 
        }, 
        complete: function() { 
         toggleBusyIndicator(); 
        }, 
        success: function (result) { 
         //Some stuff 
        } 
       }); 

       return false; 
      }); 
     } 
     $("#cancelBusy").click(function() { 
      ajaxCallObject.abort(); 
     }); 
    }); 
</script> 

Вот моя сторона сервера:

[HttpPost] 
public PartialViewResult List(VisitFilterViewModel model) 
{ 
     //IsClientConnected is ALWAYS TRUE even though I abort from client 
     while (this.Response.IsClientConnected) 
     { 
      Thread.Sleep(500); 
     } 

     return PartialView("PartialVisitFilterList", model); 
} 

С FireBug Я вижу, что действие Отменено, но IsClientConnected еще true. Что я делаю не так?

Примечание: Если вы решили удалить атрибут [HttpPost], чтобы решить эту проблему, я уже пробовал и не работал.

ответ

0

Благодаря this post Я, наконец, решил! На самом деле, то, что я делал, было полностью работоспособным, но поскольку я запускал это на своем локальном компьютере с VS Development, Response никогда не заканчивался. Но, когда я положил его на IIS Server, все получилось просто отлично.

В случае, если сайт или пост удален, я отправляю ответ здесь:

Отмены кнопка работает нормально, когда приложение размещается на IIS. Если вы тестируете сервер разработки VS, то всегда будет true. Response.IsClientConnected. Имейте в виду, что в предыдущих версиях RadProgressArea отмена не , работающая под Chrome. Для Q2.2014 это будет разрешено. Вы могли бы проверить нашу внутреннюю сборку для этого.

Смежные вопросы