7.12. 判断Cookie是否已经过期/失效/无效:isCookieExpired


    //check whether a cookie is expired
    //if expired property is set, then just return it value
    //if not set, check whether is a session cookie, if is, then not expired
    //if expires is set, check its real time is expired or not
    public bool isCookieExpired(Cookie ck)
    {
        bool isExpired = false;

        if ((ck != null) && (ck.Name != ""))
        {
            if (ck.Expired)
            {
                isExpired = true;
            }
            else
            {
                DateTime initExpiresValue = (new Cookie()).Expires;
                DateTime expires = ck.Expires;

                if (expires.Equals(initExpiresValue))
                {
                    // expires is not set, means this is session cookie, so here no expire
                }
                else
                {
                    // has set expire value
                    if (DateTime.Now.Ticks > expires.Ticks)
                    {
                        isExpired = true;
                    }
                }
            }
        }
        else
        {
            isExpired = true;
        }

        return isExpired;
    }

    

例 7.12. isCookieExpired 的使用范例


            //extract cookies for upload file
            cookiesForUploadFile = new CookieCollection();

            foreach (Cookie ck in skydriveCookies)
            {
                if ((ck.Domain == constDomainLiveCom) && (!commLib.isCookieExpired(ck)))
                {
                    Cookie ckToAdd = new Cookie(ck.Name, ck.Value, ck.Path, ck.Domain);
                    ckToAdd.HttpOnly = ck.HttpOnly;
                    ckToAdd.Expires = ck.Expires;
                    ckToAdd.Secure = ck.Secure;
                    ckToAdd.Version = ck.Version;
                    cookiesForUploadFile.Add(ckToAdd);
                }
            }

            //!!! if not seperatly set new domain value, then will overwirtten the original domain of cookie in skydriveCookies
            foreach (Cookie ckNew in cookiesForUploadFile)
            {
                ckNew.Domain = constDomainUsersStorageLive;
            }