Отображение сообщения sqlexception вызывает ошибку на странице - PullRequest
1 голос
/ 24 августа 2010

У меня есть страница aspx с несколькими полями ввода (пара int и строк) и сторонний gridview.Данные проверяются, и хранимая процедура вызывается из кода для сохранения данных в БД.

Gridview имеет возможность отображать окно с ошибкой для пользователя, которое может быть вызвано из кода позади.Поэтому, когда я улавливаю исключение, я выдаю ему сообщение об ошибке (сообщение об ошибке выглядит примерно так: «Данные не могут быть сохранены в базе данных. Ошибка:» & ex.message и вызывает функцию, которая отображает errorbox.

Обычно этопрекрасно работает, но (О, я ненавижу это, но это) при попытке отобразить sqlexception, я получаю сообщение об ошибке javascript / html на странице, и окно ошибки не отображается.

Я пришел к выводу, что ex.message содержитнекоторые символы, которые не могут отображаться в этом окне ошибок javascript / html.

Итак, я попытался использовать System.Web.HttpUtility.HtmlEncode (ex.message), но это не сработало.

Просто из любопытства я также сделал System.Web.HttpUtility.UrlEncode (ex.message), а затем смог отобразить сообщение об ошибке, но, конечно, вместо пробелов было "+"

Пример: Невозможно + вставить + дубликат + ключ + строку + в + объект + 'dbo.TableName' + с + уникальным + индексом + 'IX_Unique_Dan'.% 0d% 0aThe + оператор + был + прекращен.

Есть ливстроенный способ удаления нежелательных персонажей,eofs и подобные?На данный момент я использую мою функцию с именем CleanString, которая проверяет символы в строке.Похоже на это ...

For Each c As Char In value.ToCharArray()
    If (Char.IsLetterOrDigit(c)) Then
        msg = msg & c
    ElseIf (c = ".") Then
        msg = msg & "."

        .
        .
        .

    Else
        msg = msg & " "
    End If
Next

Tnx, Benxy

Ответы [ 2 ]

0 голосов
/ 24 августа 2010

Маловероятно, что это проблема с сообщением об ошибке и HtmlEncode (), и, скорее всего, с каким-то другим javascript, запущенным на вашей странице, который вызывает проблему.

Введите здесь сообщение об ошибке, и мы точно скажем.

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

0 голосов
/ 24 августа 2010

Может быть, вам нужно избежать кавычек? замените каждую отдельную кавычку одиночной кавычкой с обратной косой чертой.

Вы можете вставить точное сообщение об ошибке браузера с исходными строками javascript / html, где происходит ошибка.

...