Отслеживание неверного аргумента обратной передачи или обратного вызова
В моей необработанной регистрации исключений я вижу эту ошибку время от времени на данной странице. У меня нет никаких элементов управления, которые я создаю программно на странице или не привязываю кнопки к странице.
В моем журнале я получаю текущий обработчик, откуда я знаю страницу и трассировку стека, однако трассировка стека не дает ничего значимого, поскольку она просто говорит, что сводится к Page.ProcessPostData.
Есть ли способ, которым я могу регистрировать более значимые данные? Например, что было опубликовано и что ожидается?
Я никогда не смогу воспроизвести это нигде.
2 ответа
Вы можете увидеть все параметры формы запроса следующим образом:
if (System.Web.HttpContext.Current != null && System.Web.HttpContext.Current.Request != null) {
foreach (string key in System.Web.HttpContext.Current.Request.Form.Keys) {
if (key.IndexOf("__VIEWSTATE") == -1) {
//key: key
//value: System.Web.HttpContext.Current.Request.Form[key]
}
}
}
Распространенной причиной этой проблемы является то, что пользователь не ждет отрисовки всей страницы перед выполнением действия, которое вызывает обратную передачу. Насколько велика эта страница? Пользователи становятся нетерпеливыми?
Другое место, которое я вижу, это с повторителями / шаблонными элементами управления с элементами управления обратной передачей внутри - как кнопка внутри шаблона элемента повторителя - которые неправильно привязывают данные после обратной передачи, а не только один раз. Тем не менее, это будет постоянно терпеть неудачу, поэтому кажется менее вероятным.
Я не уверен, как получить больше информации из исключения... Как вы ловите это с самого начала? Я не думаю, что сам объект Page вообще создается при возникновении этого исключения, поэтому вам, вероятно, придется использовать пользовательский модуль HttpModule. Можете ли вы сделать попытку / поймать вокруг ProcessRequest? Это должно дать вам доступ к объекту запроса и опубликованным данным.