簡體   English   中英

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

[英]Null reference exception in foreach (string var in Request.QueryString)

我試圖為這個問題找到解決方案,但沒有成功...我試圖從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();
                }
            }
        }

為什么會有這個例外?

謝謝

你不能像這樣通過Request.QueryString foreach。

試試看(未測試)

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();
        }
    }
}

我認為代碼中的其他地方肯定有問題。

我相信這可能是因為您正在使用QueryString中的鍵值來訪問值。 嘗試更改以下行strReq = Request.QueryString[var].ToString();

strReq = var.ToString();

您正在命名字符串var,它也是一種類型。 用其他名稱替換var。

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

您應該使用Request.QueryString.Keys在QueryString上循環:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM