У меня есть форма следующего следующего сходства ...Имеют ли представления MVC тайм-аут, в котором операция HttpPost не будет выполнена?
@using (Html.BeginForm())
{
@* Model elements go here *@
<input type="submit" value="Save" />
}
и следующие методы для этого вида, который мы будем просто называть «Test»
public ActionResult Test()
{
return View();
}
[HttpPost]
public ActionResult Test(ModelObj m)
{
try{
//do save logic with ModelObj entity
}
catch(Exception ex){
//Log error - send e-mail to self and display 'save failed' msg to front end user
}
return View(m);
}
Этого кодом функция, как ожидается, при загрузке и другие пользователи (я не могу воссоздать проблему самостоятельно) жалуются, что в более длительное время ожидания (оставляя страницу бездействующей более 10 минут), нажав «Сохранить», страница делает обратную передачу (страница мигает и перезагружается), но данные не были сохранены.
Я добавил сообщение об ошибке в try/catch, чтобы попытаться выяснить проблему, но я не получаю никаких сообщений об ошибках, и пользователи не видят сообщение об ошибке «сохранить сбой», предоставленное блоком catch.
Я могу только представить себе, что это проблема сеанса, но я исключил все свои собственные переменные сеанса на этой странице, и мне интересно, имеет ли MVC собственный тайм-аут для представления (где он просто отбрасывает все информации о модели). Если это так, есть ли способ увеличить это? Любые другие возможности, которые я должен искать?
Не контролирует ли IIS это? –
Похоже, что значение по умолчанию составляет 110 секунд: http://stackoverflow.com/questions/579523/how-do-set-the-request-timeout-for-one-controller-action-in-an-asp-net -mvc-app В любом случае я не думаю, что это ваша проблема. Я думаю, что возможно, что ваша логика ведет себя по-разному для разных пользователей. Вызывает также вопрос проверки? – Marko
@Marko Я также подумал, что это проблема проверки (так как это использует базу данных, которую я сам не создавал). Я добавил валидацию и Model.IsValid вокруг try catch, но в итоге не смог найти ничего там. – sebe