На моем сервере выполняется длительная операция POST
[HttpPost]
public async Task<ActionResult> LongOperation()
{
var s = (int)System.Web.HttpContext.Current.Session["p"];
IProgress<int> progress = new Progress<int>(value => s = value);
await Task.Run(() =>
{
Task.Delay(2000);
progress.Report(33);
})
.ContinueWith(prevTask =>
{
Task.Delay(2000);
progress.Report(66);
})
.ContinueWith(prevTask =>
{
Task.Delay(2000);
progress.Report(100);
});
return View("Index", new TempModel());
}
Я пытаюсь отслеживать его выполнение методом GET
public ContentResult GetProgress()
{
var session = (int)System.Web.HttpContext.Current.Session["p"];
return Content(session.ToString());
}
Мой jQuery вызывает первый запрос POST..
this.Submit = function(){
$.post("@Url.Action("LongOperation", "MyController")", function (response) {
}
}
... и периодический мониторинг прогресса
this.PollServerForProgress = function PollServerForProgress() {
$.get("@Url.Action("GetProgress", "MyController")", function (response) {
console.log(response);
setTimeout(that.PollServerForProgress, 100);
}
})
}
Однако, Submit
и PollServerForProgress
, кажется, происходят последовательно.
Я всегда получаю ответ от PollServerForProgress как 1 -- iniial value
или 100 -- final value
, а не 1, 33, 66, 100
, как я ожидаю.