我有一个带有几个输入字段(几个int和字符串)和第三方gridview的aspx页面。 验证数据,并从后面的代码调用存储过程以将数据保存在DB中。
Gridview能够向用户显示错误框,可以从后面的代码中调用。因此,当我捕获异常时,我给它我的错误消息(错误消息是 类似于:“数据无法保存到数据库。错误:”&显示错误框的ex.message和call函数。
通常这很好用,但是(哦,我讨厌这个但是)当我试图显示sqlexception时,我在页面上出现了javascript / html错误,并且没有显示错误框。
我得出结论,ex.message包含一些可以通过此javascript / html错误框显示的字符。
所以,我尝试使用System.Web.HttpUtility.HtmlEncode(ex.message),但它没有用。
出于好奇,我也做了System.Web.HttpUtility.UrlEncode(ex.message)然后我能够显示错误信息,但当然它有“+”而不是空格
示例:无法在+ object +'dbo.TableName'中加+ + + + + + + + + + + + + +'+ IX_Unique_Dan'。%0d%0a +语句+已+ +已终止。
是否有内置方法可以删除不需要的字符,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
答案 0 :(得分:0)
也许你需要逃避报价?用反对的单引号替换每一个引用。
是否可以使用发生错误的javascript / html源代码行粘贴确切的浏览器错误消息。
答案 1 :(得分:0)
错误消息和HtmlEncode()不太可能出现问题,更有可能是您网页上运行的其他一些javascript导致问题。
在此处提供错误消息,我们可以确定。
此外,这是面向公众的吗?你真的不应该向用户显示内部错误,特别是当它来自数据库时,你可能会打开一个安全漏洞。