0

当我将 Request 对象作为集合访问时,它从哪里获取数据?

例如我知道

Request["someKey"]

将返回任何一个的值

Request.QueryString["someKey"]

或者

Request.Form["someKey"]

取决于设置。

是否搜索了任何其他集合(cookie、会话)?

键值对存在于几个集合中会发生什么?

我查看了 MSDN,但找不到太多信息。

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.request

谢谢您的帮助!

4

1 回答 1

1

如果你反编译这个程序集并查看源代码,它会先查看QueryString, then Form, then Cookies, then ServerVariables, 然后最后返回null,如果它们都不包含该项。

public string this[string key]
{
    get
    {
        string item = this.QueryString[key];
        if (item == null)
        {
            item = this.Form[key];
            if (item == null)
            {
                HttpCookie httpCookie = this.Cookies[key];
                if (httpCookie == null)
                {
                    item = this.ServerVariables[key];
                    if (item == null)
                    {
                        return null;
                    }
                    else
                    {
                        return item;
                    }
                }
                else
                {
                    return httpCookie.Value;
                }
            }
            else
            {
                return item;
            }
        }
        else
        {
            return item;
        }
   }
}
于 2012-05-15T22:49:04.637 回答