我在设计一个系统的时候,需要判断用户,用的是COOKIE
我把Request.Cookies["name"]写道App_Code里边的一个类底下,该类继承于System.Web.UI.Page,然后再别的aspx页面引用该类来接收Cookie出现错误提示Request is not available in this context.
后来我以为不能以直接的App_Code下的.cs类来接收,就换了个方法新加了一个aspx页面,在该aspx.cs下用一个public方法接收,然后再别的aspx页面调用这个方法,还是出现提示Request is not available in this context.
请问各位这个原因是为什么?
还有就是能不能把接收Cookie写到别的类或者什么页面里边,在需要使用的时候直接调用,如果有麻烦给个方法,谢谢了!

解决方案 »

  1.   

    我做过的方法是先创建一个类库,然后把以下方法写入:
     /// <summary>
      /// 保存一个Cookie
      /// </summary>
      /// <param name="CookieName">Cookie名称</param>
      /// <param name="CookieValue">Cookie值</param>
      /// <param name="CookieTime">Cookie过期时间(小时),0为关闭页面失效</param>
      public void SaveCookie(string CookieName,string CookieValue,double CookieTime)
      {
       HttpCookie myCookie = new HttpCookie(CookieName);
       DateTime now = DateTime.Now; 
       myCookie.Value = CookieValue;   if(CookieTime!=0)
       {
        myCookie.Expires = now.AddDays(CookieTime);
        if(HttpContext.Current.Response.Cookies[CookieName]!=null)
         HttpContext.Current.Response.Cookies.Remove(CookieName);    HttpContext.Current.Response.Cookies.Add(myCookie);
       }
       else
       {
        if(HttpContext.Current.Response.Cookies[CookieName]!=null)
         HttpContext.Current.Response.Cookies.Remove(CookieName);    HttpContext.Current.Response.Cookies.Add(myCookie);
       }
      }
      /// <summary>
      /// 取得CookieValue
      /// </summary>
      /// <param name="CookieName">Cookie名称</param>
      /// <returns>Cookie的值</returns>
      public string GetCookie(string CookieName)
      {
       HttpCookie myCookie = new HttpCookie(CookieName);
       myCookie = HttpContext.Current.Request.Cookies[CookieName];   if (myCookie != null)
        return myCookie.Value;
       else
        return null;
      }
     /// <summary>
      /// 清除CookieValue
      /// </summary>
      /// <param name="CookieName">Cookie名称</param>
      public void ClearCookie(string CookieName)
      {
       HttpCookie myCookie = new HttpCookie(CookieName);
       DateTime now = DateTime.Now;   myCookie.Expires = now.AddYears(-2);   HttpContext.Current.Response.Cookies.Add(myCookie);
      }
    之后在各个页面调用就应该OK了。
      

  2.   

    public class Class1 : System.Web.UI.Page
    {
        public string GetCookies()
        {
            if (Request.Cookies["name"] == null)
            {
                return "nothing";
            }
            else
            {
                return Request.Cookies["name"].ToString();
            }
        }
    ......
      

  3.   

    OK
    用System.Web.HttpContext.Current.Request.Cookies["name"]
    解决了