HttpRequest索引器的搜索顺序

时间:2009-10-27 19:02:02

标签: c# asp.net request httprequest

如果您通过Request [key]对Request的项目进行简单索引,则会在4 locations中查找。订单是什么?有人在“Cookies,ServerVariables,Form和QueryString”页面上猜测。有人有确切消息么?文档将是一个奖励:)

3 个答案:

答案 0 :(得分:6)

  

public string this [string key] {get; }

     

声明类型:System.Web.HttpRequest程序集:System.Web,   版本= 2.0.0.0

public string this[string key]
{
    get
    {
        string str = this.QueryString[key];
        if (str != null)
        {
            return str;
        }
        str = this.Form[key];
        if (str != null)
        {
            return str;
        }
        HttpCookie cookie = this.Cookies[key];
        if (cookie != null)
        {
            return cookie.Value;
        }
        str = this.ServerVariables[key];
        if (str != null)
        {
            return str;
        }
        return null;
    }
}

答案 1 :(得分:1)

只需使用Reflector即可自行查看。订单是QueryString,Form,Cookies,然后是ServerVariables。

答案 2 :(得分:1)

这是来自ASP site,但它仍然适用于ASP.NET:

  

所有请求对象变量都可以   通过电话直接访问   请求(变量)没有   集合名称。在这种情况下,Web   服务器搜索中的集合   以下顺序:

     
      
  1. 查询字符串
  2.   
  3. 表格
  4.   
  5. 缓存
  6.   
  7. ClientCertificate
  8.   
  9. ServerVariables
  10.