Andreas Gosch Ответов: 1

Asp.net в MVC 5: после того, как форма была обработана, редирект не работает


Привет, в настоящее время я работаю над уже существующим проектом, который написан на английском языке. ASP.NET 5. В этом есть форма, на которой есть кнопка. Эта кнопка нажимается много раз (до 400 раз в течение примерно 3 часов). Сегодня я сделал автоматический тестовый прогон в течение 6 часов, в котором кнопка была нажата примерно 1000 раз. Внезапно метод post для формы, в которой находится кнопка, больше не был доступен. Я использую Windows Server 2012 с IIS 8. Моя форма выглядит так:

@using (Html.BeginForm("PerformanceControl", "Performance"))
{
      //some stuff left out
      <div class="col-md-12 col-sm-12">
             <button name="button" src value="forwardRecord" class="btn btn-primary">
                                  Next Chunk  
             </button>
       </div>
}


Приемный метод post выглядит следующим образом:

[HttpPost]
public IActionResult PerformanceControl(int id, string button, ShowPerformanceControlViewModel viewModel)
{//id is projectID
	//Do some stuff
             return RedirectToAction("PerformanceControl");
}


Я опустил логический код, потому что это очень большой метод.
Метод POST и GET элемента управления производительностью вызываются с одним и тем же шаблоном URL: "/Performance/PerformanceControl/11" (одиннадцать-это всего лишь пример идентификатора).
GET-версия вызова все еще работает, когда возникает ошибка. Я новичок в этом деле ASP.NET так что я действительно не знаю, что может быть причиной этого странного поведения, особенно когда он работал 1000 раз в одном сеансе и данные сеанса не были потеряны. Конечная точка была только недоступна больше?

Обновление:

Теперь мне удалось воссоздать проблему, и сначала я подумал, что это был запрос POST, но оказалось, что запрос GET после обработки данных формы не работает, но когда я нажал перезагрузить сайт, он работает. Есть ли распространенная проблема с перенаправлением в ASP.NET-что?

P.S.: извините за мой плохой английский, мой родной язык-немецкий.

Что я уже пробовал:

Я просмотрел все логи сервера, единственное, что мне удалось найти, это то, что после 14:20 (20.06.2018) каждый post-запрос на post-метод формы больше не работал. Все остальные формы на моем сайте, например логин и регистрационная форма, по-прежнему работали без проблем. Я также просмотрел окно просмотра событий, но не смог найти никаких подозрительных записей. Только перезапуск системы asp.net сайт вернул форму к жизни. Я также проверил, есть ли ошибки в базе данных, но их нет.

1 Ответов

Рейтинг:
1

MadMyche

Вы уже обнаружили, почему редирект не работает: метод формы-GET, поэтому действие POST никогда не произойдет.

Очень легко исправить, измените метод на форме для публикации

@using (Html.BeginForm("PerformanceControl", "Performance", FormMethod.Post))


Andreas Gosch

Спасибо за это, но почему он работает около 500 раз, а затем начинает отказывать? Это просто мое любопытство.