foreach中的空引用异常(Request.QueryString中的字符串var)

时间:2011-10-17 10:39:28

标签: c# .net foreach

我试图找到这个问题的解决方案,但没有成功...... 我试图从Request.QueryString [var]中删除.ToString()并添加一个if控件 在这一开始就像这样

if Request.QueryString.HasKeys()) {
  foreach (string var in Request.QueryString)
        {.........
           .............
}

但没有......

完整的代码是

        string[] array_split_item = new string[] {"<script", "</script>", "‘", "’" };
        int pos = 0;
        string strReq = "";
        foreach (string var in Request.QueryString)
        {
            foreach (string strItem in array_split_item)
            {
                strReq = Request.QueryString[var].ToString();
                pos = strReq.ToLower().IndexOf(strItem.ToLower()) + 1;
                if (pos > 0)
                {
                    Response.Write("Some Text");
                    Response.End();
                }
            }
        }

为什么会出现此异常?

由于

4 个答案:

答案 0 :(得分:1)

你无法通过Request.QueryString这样做。

试试这个(未经测试)

foreach (string KEY in Request.QueryString.Keys)
{

string value = Request.QueryString[KEY]; //already a string by design, no need to ToString() it

// ... use value for whatever you need

}

修改 visual studio 2008构建这个很好(粘贴到ASPX页面的page_load方法来试试); Visual Studio 2010 SP1不会抱怨上层建设。

string[] array_split_item = new string[] { "<script", "</script>", "‘", "’" };
int pos = 0;
string strReq = "";
foreach (string var in Request.QueryString.Keys)
{
    foreach (string strItem in array_split_item)
    {
        strReq = Request.QueryString[var].ToString();
        pos = strReq.ToLower().IndexOf(strItem.ToLower()) + 1;
        if (pos > 0)
        {
            Response.Write("Some Text");
            Response.End();
        }
    }
}

我认为代码中的其他地方一定有问题。

答案 1 :(得分:0)

我相信这可能是因为您在查询字符串中使用键的值来访问值。 尝试将行strReq = Request.QueryString[var].ToString();更改为

strReq = var.ToString();

答案 2 :(得分:0)

您正在命名您的字符串var,它也是一种类型。将var替换为其他名称。

foreach (string text in Request.QueryString.Keys)
.....
strReq = Request.QueryString[text].ToString();

答案 3 :(得分:0)

您应该使用Request.QueryString.Keys循环QueryString:

foreach (string key in Request.QueryString.Keys)
{
    string value = Request.QueryString[key];
    if (!String.IsNullOrEmpty(value))
    {
        //do work
    }
}