Звучит так, как будто вы выполняете обратную передачу на ту же страницу, затем вставляете ее в базу данных перед повторным отображением той же страницы пользователю, минус кнопка отправки?
Если это так, самый простой способ решить эту проблему - сделать Response.Redirect()
на той же странице - поэтому, когда пользователь нажимает клавишу F5, он перезагружает запрос GET на страницу вместо POST.
Пояснение:
Когда вы выполняете обратную передачу в ASP.NET, браузер отправляет на сервер POST-запрос . Я не знаю вашего опыта работы с HTTP-методами, но даже если вы новичок в веб-программировании, вы, вероятно, испытали влияние этих типов запросов в браузерах. Иногда, когда вы отправляете формы на веб-сайтах и нажимаете кнопку «Назад», он говорит что-то вроде «хотите ли вы повторно отправить данные формы». Это потому, что эти формы отправляют данные на сервер, используя метод HTTP POST. Эффект кнопки «Назад» в этом случае такой же, как и при нажатии клавиши F5 - браузер повторяет один и тот же запрос POST снова (для этого требуется некоторый тип данных формы, и в этих случаях это те же данные, которые вы отправили в последний раз). время).
Когда вы используете Response.Redirect()
, сервер выдает HTTP-код состояния 302 (ресурс временно перемещен) в ответ на запрос. Затем браузер теперь выдаст запрос GET для ресурса, на который ему было сказано перенаправить (в данном случае, на вашу точную страницу).
Теперь, когда вы находитесь на странице, она возвращается, как если бы вы посетили ее по ссылке или набрали ее непосредственно в адресной строке. Если вы нажмете F5 на этот раз, будет выдан запрос GET, а не POST.
Я бы порекомендовал вам скачать Firebug и активировать панель "Net". Вы можете точно увидеть, что составляет запрос / ответ, а также список всех запросов, сделанных на вашей странице.
Дополнительные ресурсы:
Если вы испытываете приключения, вы можете проверить еще больше кодов состояния (и, кстати, я фактически использовал 418 в приложении, над которым я работаю как хакер, чтобы обойти Forms Authentication for ASP.NET).
Если Firebug не достаточно, вы можете загрузить Fiddler и, на самом деле, вручную и повторять запросы по своему вкусу.
Если вам недостаточно GET и POST, вы можете использовать другие методы для изменения состояний в вашем приложении. Возможно, вы слышали о архитектуре RESTful , которая в основном использует HTTP-методы GET, PUT, POST и DELETE, как и было задумано.