我有一个带有静态属性的CurrentUser类,其值在上次用户访问网站时存储在cookie中。我希望能够从这个类中读取cookie的值。可能吗?看起来Request.Cookies仅在网页中可用。我正在尝试做的简化版本是:
class CurrentUser
{
public static string MyField
{
get
{
return Request.Cookies["MyField"];
}
}
}
这不起作用。我收到此错误消息:“当前上下文中不存在名称'Request'。
答案 0 :(得分:11)
using System.Web;
...
return HttpContext.Current.Request.Cookies["MyField"];
答案 1 :(得分:4)
看看HttpContext.Current。它使您可以访问会话,响应,请求等...
答案 2 :(得分:0)
你可以使用HttpContext.Current.Request.Cookies["MyField"]
..但我强烈建议不要这样做,因为你无法测试它。
如果代码上下文是您的CurrentUser问题的唯一解决方案,我建议直接使用CodeContext而不是HttpContext,尽管需要一些机制。
你能解释为什么你不推荐HttpContext
我认为CurrentUser应该是业务代码。如果你使用HttpContext,你会依赖ASP.net的生命周期。如果必须对依赖于CurrentUser的某些业务功能进行单元测试,则必须完成http请求的整个路径。