#asp.net #vb.net
#asp.net #vb.net
Вопрос:
У нас есть веб-сайт в производстве (ASP.NET v4), где на странице входа в систему мы иногда перехватываем исключение «Входная строка была не в правильном формате». Это перехватывается в Application_Error, который регистрирует его детали
Исключение взято из Server.GetLastError().GetBaseException()
. Однако трассировка стека отображается только следующим образом:
Трассировка стека:
в Microsoft.VisualBasic.CompilerServices.Преобразования.parseDouble(строковое значение, NumberFormatInfo NumberFormat)
в Microsoft.VisualBasic.CompilerServices.Преобразования.ToBoolean(строковое значение)
Веб-странице не нужно пытаться преобразовать ввод (поскольку требуется только имя пользователя), и, похоже, она не вызывает никаких функций VB, которые это делают.
Как я могу отследить эту прерывистую ошибку?
Комментарии:
1. Для меня это выглядит так, как будто вы обнаруживаете опечатку, когда кто-то намеревается нажать, например, клавишу «e», но на самом деле нажимает «4». И это как первый символ входа в систему, в результате чего VB принимает число и, следовательно, (неудачную) попытку преобразования.
2. Привет, нет проверки ввода имени пользователя. Имя пользователя может быть любым числовым или буквенным
3. Не делайте
GetBaseException()
. Получите полное исключение. Затем укажите все эти детали в своем вопросе.4. asp.net имеет несколько встроенных систем для предотвращения «плохого» ввода. Поэтому, если пользователь вводит в это <script>alert(‘hello’);</script> then when you re-display the page, that text will actually start to be interpreted by the browser as CODE ENTERED by the user! Таким образом, некоторые типы ввода приведут к ошибке — поскольку эта защита встроена в asp.net веб-страницы для вас. Это просто ошибка, которую можно перехватить на этой странице.