Asp.net 为什么我的global.asax错误处理程序不工作?
我的global.ascx中有以下代码,当我单击generate error按钮时,代码会运行,但在数据库中插入错误时似乎失败了 我希望将错误保存到DB并重定向到default.aspx 相当标准的东西 我得到的错误是:exe.Message=“靠近“系统”的语法不正确。” (看起来像是global.asx中使用的SQL对象) 问题在于添加了错误消息。它有一个单引号,打破了SQL。代码在此行获得此值作为结果:Asp.net 为什么我的global.asax错误处理程序不工作?,asp.net,error-handling,global-asax,Asp.net,Error Handling,Global Asax,我的global.ascx中有以下代码,当我单击generate error按钮时,代码会运行,但在数据库中插入错误时似乎失败了 我希望将错误保存到DB并重定向到default.aspx 相当标准的东西 我得到的错误是:exe.Message=“靠近“系统”的语法不正确。” (看起来像是global.asx中使用的SQL对象) 问题在于添加了错误消息。它有一个单引号,打破了SQL。代码在此行获得此值作为结果: theBody.Append("Error Message: " + ex.ToStr
theBody.Append("Error Message: " + ex.ToString() + "\n");
sSQL=“插入到PMISWebER值中
(“URL:
\推荐人:
\nIP:
127.0.0.1\n错误消息:System.Web.HttpUnhandledException:
类型异常
'System.Web.HttpUnhandledException'
是不是
这是我的quick watch中的实际值,奇怪的是在结尾看到了…你真的应该使用参数化的插入。我确信你尝试插入的字符串有引号问题,这导致了异常 以下是一个例子:
您确实应该使用参数化插入。我确信您尝试插入的字符串存在引号问题,这导致了异常 以下是一个例子:
这实际上应该是一个
ExecuteNonQuery()
调用。ExecuteScalar()
主要用于从聚合中选择原子值
这实际上应该是一个
ExecuteNonQuery()
调用。ExecuteScalar()
主要用于从聚合中选择原子值
正如所料,引号有问题。字符串用单引号括起来,但里面是“System.Web..类型的文本例外,它在不需要引号的地方添加了引号
解决方案?使用参数并让驱动程序处理这些引号。正如预期的那样,引号有问题。字符串由单引号括起来,但里面是“System.Web..
类型的文本例外,它在您不需要引号的地方添加了引号
解决方案?使用参数并让驱动程序处理这些引号。您的文件实际上是名为global.ascx
,还是名为global.asax
?如果数据库出现错误怎么办?该sql字符串是什么(是否有任何未替换的引号?),是否有任何错误(删除重定向时是否看到新错误?)您的文件实际上是名为global.ascx
,还是名为global.asax
?如果数据库中出现错误,该怎么办?该sql字符串是什么(是否有未替换的引号?)+1-他的构建中的某个变量可能会在字符串中注入单引号,从而破坏执行,这不是不可行的。你不仅应该在这里使用参数化SQL,而且永远不要将SQL连接为这样的字符串。出于安全原因,这是一个真正的不可行:+1-他的构建中的某个变量可能会在字符串中插入单引号会破坏执行。在这里不仅应该使用参数化SQL,而且永远不要将SQL连接为这样的字符串。出于安全原因,这是一个真正的禁忌:
theBody.Append("Error Message: " + ex.ToString() + "\n");