Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法计算表达式的值_Asp.net_.net_Vb.net_Visual Studio - Fatal编程技术网

Asp.net 无法计算表达式的值

Asp.net 无法计算表达式的值,asp.net,.net,vb.net,visual-studio,Asp.net,.net,Vb.net,Visual Studio,我使用一个类来检查应用程序中的某些单词,以防止SQL注入 在这个类中,有一个for循环,它试图将特定单词与黑名单中的单词进行匹配。 如果有匹配项,我必须重定向到系统的错误页面 但是,当找到匹配项并尝试重定向时,我不断收到错误“无法计算表达式” 代码如下: Private Sub CheckInput(ByVal parameter As String) Try Dim errorPage As String = "error_page.aspx?Injection=" & par

我使用一个类来检查应用程序中的某些单词,以防止SQL注入

在这个类中,有一个for循环,它试图将特定单词与黑名单中的单词进行匹配。 如果有匹配项,我必须重定向到系统的错误页面

但是,当找到匹配项并尝试重定向时,我不断收到错误“无法计算表达式”

代码如下:

Private Sub CheckInput(ByVal parameter As String)
Try
    Dim errorPage As String = "error_page.aspx?Injection=" & parameter

    For i As Integer = 0 To blackList.Length - 1
        If (parameter.IndexOf(blackList(i), StringComparison.OrdinalIgnoreCase) >= 0) Then
            'Handle the discovery of suspicious Sql characters here 
            'generic error page on your site 
            HttpContext.Current.Response.Redirect(errorPage)
        End If
    Next

Catch ex As Exception
    Throw ex
End Try
一旦Try块捕捉到错误,它就会不断给出错误,并且不会重定向到错误页面


有什么想法吗?

你可能有一个无限循环。
CheckInput
是否也为您的错误页面运行

Dim errorPage As String = "error_page.aspx?Injection=" & parameter
当您遇到错误时,您将包含导致错误的同一字符串,从而导致整个过程重新开始

当Visual Studio调试器看到错误时,“无法计算表达式”来自调试器。如果没有附加调试器,代码将按预期工作

(这就是
ThreadAbortException
的作用)。然后,您负责优雅地“结束”请求


FWIW,您还应该删除
try/catch
,因为它正在提供服务。而且,如前所述,SQL参数是防止注入的方法,而不是白名单。

您应该使用准备好的SQL注入语句。s“无法计算表达式”来自调试器,而不是您的代码。您可能对某些超出范围的代码进行了监视。