[英]Why is my cookie showing as null in C# ASP.NET Empty Web Project?
在玩Black Jack游戲時,我試圖將玩家的余額保存為cookie。 我無法使其正常工作。 退出瀏覽器並重新加載網頁時,cookie始終為null。
我將cookie聲明為靜態變量,因此可以在以后的方法中將其發送給客戶端。
public partial class BlackJack : System.Web.UI.Page
{
public static HttpCookie cookie;
protected void Page_Load(object sender, EventArgs e)
{
cookie = Request.Cookies["Balance"];
if (!IsPostBack)
{
if (cookie != null)
{
PlayerBalance = Convert.ToInt32(cookie.Values["balance"]);
if (PlayerBalance == 0)
{
PlayerBalance = 250;
}
}
else
{
PlayerBalance = 250;
HttpCookie cookie = new HttpCookie("Balance");
cookie.Values.Add("balance", PlayerBalance.ToString());
cookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(cookie);
}
PlayerBet = 0;
}
然后,在每手之后運行的更高版本的方法中,我使用Response.Cookies.Add()保存cookie。
public void Other Method()
{
cookie = Request.Cookies["Balance"];
cookie.Values["balance"] = PlayerBalance.ToString();
Response.Cookies.Add(cookie);
}
但是,如果我關閉瀏覽器並返回該站點,則cookie始終為null。
默認情況下,Cookie是非永久性的。 這意味着只要您不指定Cookie的到期日期,瀏覽器就會在您關閉瀏覽器時將其清除。
因此,在這種情況下,您將需要一個持久性cookie ,可以通過設置Expires
-property來創建它:
var cookie = new HttpCookie("Balance");
cookie.Expires = DateTime.Now.AddDays(1);
有關更多詳細信息,請參見這篇綜合文章: https : //msdn.microsoft.com/zh-cn/library/ms178194.aspx
但是請注意@CodeCaster已經說過:Cookie只是一小段文本,客戶端可以輕松修改。 因此,您應該考慮將敏感信息存儲在其他位置。 或者至少您應該考慮對Cookie進行加密。
刪除線
public static HttpCookie cookie;
它將創建非線程安全類型的cookie。在經過多線程讀取的環境中,它將具有混亂的價值。
您的static
問題會導致此問題。每個方法都創建cookie並將其轉儲到瀏覽器Response.Cookies.Add(cookie)
且名稱相同
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("Balance");
cookie.Values.Add("balance", "akash".ToString());
cookie.Expires = DateTime.Now.AddYears(1);
Response.Cookies.Add(cookie);
}
protected void Button1_Click(object sender, EventArgs e)
{
var cookie = Request.Cookies["Balance"];
cookie.Values["balance"] = "ggg".ToString();
Response.Cookies.Add(cookie);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.