У меня есть контроллер, который выполняет действия по одному, почти как будто он помещает мои запросы в очередь, а затем отвечает на каждый по очереди.Так, например, если я нажимаю 2 или 3 кнопки, которые настроены на POST для моего контроллера, контроллер будет в конечном итоге запускать все действия, но не правильно, когда я нажимаю кнопку.
После разрыва моего проекта я понял, что это странное поведение как-то вызвано установкой переменной Session в моем действии контроллера по умолчанию ..
Контроллер:
[HttpGet]
public ActionResult Index() //Start Page
{
System.Web.HttpContext.Current.Session["SomeString"] = "SomeValue";
return View();
}
[HttpPost]
public void Run(string json)
{
for (int i = 0; i < 1000000; i++)
{
for (int j = 0; j < 1000000; j++)
{
}
}
}
ИндексПредставление содержит только два элемента:
<a href="#" class="submit">Run</a>
<a href="Home/OtherPage">Other Page</a>
И AJAX для нажатия кнопки:
$(document).ready(function () {
$(".submit").on('click', function () {
$.ajax({
type: 'POST',
url: 'Run',
data: "SomeString",
dataType: "text"
});
}
}
Когда я удаляю строку кода, устанавливающую переменную сеанса, я могу нажать кнопку запуска (который запускает длительный цикл), нажмите кнопку «OtherPage» и сразу перейдите к представлению «OtherPage».Если я сделать установить переменную сеанса, запустить цикл, а затем нажать кнопку «OtherPage», мое приложение зависнет до завершения цикла, а затем перейдет к представлению «OtherPage».
У кого-нибудь есть идеи, почему это происходит?