无法通过键名访问查询字符串值,但可以通过索引访问

时间:2013-10-18 20:32:00

标签: asp.net routing query-string handler

我有以下网址:http://localhost:60815/Image.ashx?w=202&h=0&f=somefile

通过以下方式访问其中一个参数时出现Index was out of range. Must be non-negative and less than the size of the collection.错误:

Int32.TryParse(context.Request.QueryString['w'], out width);

但我可以使用索引访问值,即:

Int32.TryParse(context.Request.QueryString[0], out width);

当我查看查询字符串时(在调试立即窗口中),它确实知道了键:

context.Request.QueryString
{w=202&h=0&f=somefile}
   [System.Web.HttpValueCollection]: {w=202&h=0&f=somefile}
   base {System.Collections.Specialized.NameObjectCollectionBase}: {w=202&h=0&f=somefile}
   AllKeys: {string[3]} // [0]=w, [1]=h, [2]=f

有人可以解释为什么会这样吗?通过索引访问它们不是问题,但我想知道为什么通过密钥访问不起作用。

注意:我的项目是一个MVC,我没有设置任何特定的路由来处理处理程序,所以我不知道这是否会导致问题。

1 个答案:

答案 0 :(得分:1)

尝试使用双引号:

context.Request.QueryString["w"]