Форма asp.net представлена ​​дважды

У меня есть веб-страница с формой и кнопкой отправки, а на стороне сервера я использовал значение сеанса, чтобы дважды запретить отправку формы, как если бы начальное значение сеанса равнялось 0, а после нажатия кнопки "Отправить" - 1. Кнопка, каждый раз кнопка подтверждения будет проверять значение сеанса в первую очередь.

Но когда наш проект был опубликован, я обнаружил, что для одного и того же человека было две записи (это означает, что они отправляют дважды, я полагаю, и это случалось не очень часто, возможно, для одного или двух человек), и временной интервал между этими двумя записями очень маленький, примерно 0,3 секунды, поэтому сначала я подумал, что они могут дважды щелкнуть по кнопке отправки, но после того, как я попробовал на своем компьютере, он все равно вставил только одну запись в базу данных.

Я запутался, как это происходит и как это предотвратить?

Вот код:

        protected void Page_Init(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session["IsBackForwordPayment"] = 0;
        }
    }

    protected void submit_Click(object sender, EventArgs e)
    {

       if (Session["IsBackForwordPayment"] != null && Session["IsBackForwordPayment"].ToString() != "0")
            Response.Redirect("~/pages/renewal/duplicaterenewal.aspx");

.......
}

Возможно ли это потому, что после проверки значения сеанса программа просто перенаправляет на другую страницу, но не завершает процесс отправки??

2 ответа

Пытаться

Response.Redirect("~/pages/renewal/duplicaterenewal.aspx", true);

Это остановит выполнение на текущей странице.

Очевидно, Response.End() НЕ остановит выполнение кода (что он и делает). Я обнаружил это здесь:

Response.Redirect не окончание выполнения

Вам нужно будет добавить return заявление, чтобы закончить выполнение после того, как вы Response.Redirect(),

Другие вопросы по тегам