Неверный аргумент обратной передачи или обратного вызова.Зачем? - PullRequest
8 голосов
/ 02 мая 2011

Так я получаю исключение

Неверный аргумент обратной передачи или обратного вызова. Проверка события включена с помощью в конфигурации или <% @ Page EnableEventValidation = "true"%> в стр. В целях безопасности это Функция проверяет, что аргументы события обратного или обратного вызова происходят из серверного элемента управления, который Первоначально оказал их. Если данные действителен и ожидается, используйте ClientScriptManager.RegisterForEventValidation метод для того, чтобы зарегистрировать данные обратного или обратного вызова для проверка.

Со следующей трассировкой стека

[System.ArgumentException: без обработки Исключение: Неверный постбэк или Аргумент обратного вызова. Проверка события включен с помощью в конфигурация или <% @ Page EnableEventValidation = "true"%> в стр. В целях безопасности это Функция проверяет, что аргументы события обратного или обратного вызова происходят из серверного элемента управления, который Первоначально оказал их. Если данные действителен и ожидается, используйте ClientScriptManager.RegisterForEventValidation метод для того, чтобы зарегистрировать данные обратного или обратного вызова для проверка.] в System.Web.UI.ClientScriptManager.ValidateEvent (String uniqueId, строковый аргумент) в System.Web.UI.Control.ValidateEvent (String uniqueID, String eventArgument) в System.Web.UI.WebControls.LinkButton.RaisePostBackEvent (String eventArgument) в System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (String eventArgument) в System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument)
в System.Web.UI.Page.RaisePostBackEvent (NameValueCollection postData) в System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Исключение возникает после отправки формы, а затем быстрого нажатия кнопки LinkButton, чтобы загрузить файл на той же странице, прежде чем страница перезагрузится снова.

Может ли кто-нибудь объяснить детали того, почему это исключение возникает при выполнении действий, описанных выше?

Заранее спасибо!

Ответы [ 5 ]

17 голосов
/ 02 мая 2011

Это должно быть одно из самых неприятных сообщений об ошибках в .NET, но как только вы почувствуете, что происходит, это имеет смысл. .NET любит знать ВСЕ, что происходит. Он отслеживает все элементы, которые он поместил на странице. В том же духе .NET обижается, когда получает информацию от чего-то, о чем он не знал. В вашем случае, похоже, что в тот момент, когда вы нажимаете кнопку LinkButton, .NET не считает, что она должна быть там. По моему опыту, есть две вероятные причины этого:

  1. Вы работаете с мастерством на стороне клиента, которое создает новые входы или клонирует существующие входные данные.

  2. Во время обработки отправки формы .NET что-то делает с LinkButton, что делает его недоступным. Вот некоторые примеры, с которыми я столкнулся, когда ваш LinkButton динамически создается в бэкэнде, или вы используете UpdatePanels, и их содержимое изменяется во время отправки формы.

По сути, я полагаю, что если вы пройдете по коду отправки формы и увидите этот LinkButton, вы увидите, что .NET забудет об этом, что понятно вызывает это «исключение безопасности» при нажатии LinkButton.

3 голосов
/ 02 мая 2011

Если они щелкают до того, как у страницы появится возможность полностью отобразить, то поля __EVENTVALIDATION не будут полностью записаны - поэтому ваша ошибка.

Теперь это было исправлено в 3.5 SP1 / 3.0 SP2, и настраивается в web.config;

<configuration>
    <system.web>
        <pages renderAllHiddenFieldsAtTopOfForm="true"></pages>
    </system.web>
</configuration>

Значение по умолчанию - true, поэтому какая версия.NET ты бежишь?Вы всегда можете отключить кнопки на стороне клиента, пока страница не загрузится.

1 голос
/ 14 июля 2016

Эта ошибка периодически появлялась у меня на очень большой странице.

Я обнаружил, что если нажать кнопку до , когда страница завершит загрузку, она выдаст эту ошибку.

Ожидание полной загрузки страницы перед нажатием кнопки, я не получил ошибку.

0 голосов
/ 29 февраля 2016

Я обнаружил, что HTML-формы могут вызвать эту проблему в WebForms, если вы не удалите их все из шаблона

0 голосов
/ 26 июня 2014

Используйте это в page.asx в теге страницы EnableEventValidation = "false"

...