我试图找到这个问题的解决方案,但没有成功...... 我试图从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();
}
}
}
为什么会出现此异常?
由于
答案 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
}
}