2009-10-27 80 views
6

如果通過Request [key]對Request的項目進行簡單索引,則它會在4 locations中查找。訂單是什麼?有人在「Cookies,ServerVariables,Form和QueryString」的頁面上猜測。有人有確切消息麼?文檔將是一個獎金:)HttpRequest索引器的搜索順序

回答

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; 
    } 
} 
+0

又一個有用的參考:http://www.hanselman.com/blog/ASPNETParams CollectionVsQueryStringFormsVsRequestindexAndDoubleDecoding.aspx – smwikipedia 2013-11-12 06:15:54

1

只需使用Reflector,你可以看到它自己。順序是QueryString,Form,Cookies,然後是ServerVariables。

1

這是從ASP site,但它仍然適用於ASP.NET:

所有請求對象變量可以 通過調用 請求(變量)未經 集合名稱直接訪問。在這種情況下,Web 服務器搜索在 集合順序如下:

  1. 查詢字符串
  2. 形式
  3. 餅乾
  4. ClientCertificate
  5. ServerVariables
+2

反射器說在.Net 2.0中不搜索「ClientCertificate」。 – David 2009-10-27 19:34:40