簡體   English   中英

ASP.NET MVC 5-未創建Cookie

[英]ASP.NET MVC 5 - Cookies being not created

我的控制器操作調用了處理cookie的私有方法。 問題在於根本沒有創建cookie。 我在SO上閱讀了多篇文章,但沒有找到答案,因為我認為此代碼中的Cookie處理是正確的。

關於cookie,我需要檢查任何web.config設置嗎? 我還嘗試了不同的瀏覽器。

我調試了代碼,可以看到代碼中實際上設置了cookie,但是一旦加載頁面並查看cookie,cookie就不存在了。

  private ABHomeModel HandleWhiteBoxCookie(ABHomeModel model)
        {
            var whiteBox = _whiteBoxService.GetActiveWhiteBox();

            if (model.WhiteBox != null)
            {
                const string cookieName = "whiteBox";

                var whiteBoxCookie = HttpContext.Request.Cookies.Get(cookieName);

                if (whiteBoxCookie != null)
                {
                    var displayedTimes = Convert.ToInt32(whiteBoxCookie.Value);
                    if (displayedTimes < 2)
                    {
                        displayedTimes++;

                        var cookie = new HttpCookie(cookieName, displayedTimes.ToString())
                        {
                            Expires = new DateTime().AddMonths(1),
                            Secure = false
                        };

                        HttpContext.Response.Cookies.Set(cookie);
                        ViewBag.IsWhiteBoxActive = true;
                    }
                    else
                    {
                        ViewBag.IsWhiteBoxActive = false;
                    }
                }
                else
                {
                    var cookie = new HttpCookie(cookieName, "1")
                    {
                        HttpOnly = true,
                        Domain = Request.Url.Host,
                        Expires = DateTime.Now.AddMonths(1),
                        Secure = false
                    };

                    HttpContext.Response.Cookies.Add(cookie);
                    ViewBag.IsWhiteBoxActive = true;
                }

                model.WhiteBox = whiteBox;
            }

            return model;
        }

我的同事發現了問題。 與設置域有關。 一旦我們刪除這一行:

Domain = Request.Url.Host,

Cookies開始工作,現在正在創建。

該方法的完整更新代碼:

private ABHomeModel HandleWhiteBoxCookie(ABHomeModel model)
        {
            var whiteBox = _whiteBoxService.GetActiveWhiteBox();

            if (whiteBox != null)
            {
                const string cookieName = "whiteBox";

                var whiteBoxCookie = HttpContext.Request.Cookies.Get(cookieName);

                if (whiteBoxCookie != null)
                {
                    var displayedTimes = Convert.ToInt32(whiteBoxCookie.Value);
                    if (displayedTimes < 2)
                    {
                        displayedTimes++;

                        var cookie = new HttpCookie(cookieName, displayedTimes.ToString())
                        {
                            HttpOnly = true,
                            Secure = false
                        };

                        HttpContext.Response.Cookies.Set(cookie);
                        ViewBag.IsWhiteBoxActive = true;
                    }
                    else
                    {
                        ViewBag.IsWhiteBoxActive = false;
                    }
                }
                else
                {
                    var cookie = new HttpCookie(cookieName, "1")
                    {
                        HttpOnly = true,
                        Expires = DateTime.Now.AddMonths(1),
                        Secure = false
                    };

                    HttpContext.Response.Cookies.Add(cookie);
                    ViewBag.IsWhiteBoxActive = true;
                }

                model.WhiteBox = whiteBox;
            }

            return model;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM