ASP.NET входная строка v4 была не в правильном формате исключение

#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 веб-страницы для вас. Это просто ошибка, которую можно перехватить на этой странице.