2009-09-03 78 views
2

我有一個CurrentUser類,其靜態屬性的值在上次訪問網站時存儲在cookie中。我希望能夠從這個類讀取cookie的價值。可能嗎?它看起來像Request.Cookies只在網頁中可用。我試圖做的簡化版本是:asp.net是否可以從靜態類中讀取cookie的值?

class CurrentUser 
{ 
public static string MyField 
      { 

       get 
       { 
        return Request.Cookies["MyField"]; 
       } 

      } 

} 

這是行不通的。我得到這個錯誤信息:「名字‘請求’沒有在當前情況下存在」

回答

9
using System.Web; 
... 
return HttpContext.Current.Request.Cookies["MyField"]; 
4

看看HttpContext.Current它允許您訪問會話,響應,請求,等等

0

可以使用HttpContext.Current.Request.Cookies["MyField"] ..但我會強烈建議反對,因爲你不會是能夠測試。

如果代碼方面是您CurrentUser問題唯一的解決辦法,我會推薦直接使用CodeContext而不是HttpContext,儘管需要一些機器。

你能解釋一下你爲什麼不推薦的HttpContext

嗯,我想CurrentUser應該是業務代碼。如果你使用HttpContext,你將會依賴於ASP.net的生命週期。如果您必須依賴CurrentUser對部分業務功能進行單元測試,則必須完成http請求的整個路徑。

+0

你能解釋爲什麼你不推薦HttpContext.Current.Request.Cookies [「MyField」]? – Anthony 2009-09-03 14:37:06

相關問題