我尝试在SelectedIndexChanged事件中保存选择下拉到cookie。
protected void BranchNumberList_SelectedIndexchanged(object sender, EventArgs e)
{
HttpCookie myCookie = new HttpCookie("default_Loc", BranchNumberList.SelectedValue);
myCookie.Expires = DateTime.Now.AddDays(365);
Response.Cookies.Add(myCookie);
ViewDate.Enabled = true;
SelectEverything();
}
myCookie看起来很好,我可以用快速表在响应对象中看到它。
当从Page_Load调用此方法时,我尝试在下次登录时检索它。
private void BranchName()
{
DatabaseHelpers dh = new DatabaseHelpers();
DataSet DrpDownSrc = dh.FillBranchSelection(objConn);
BranchNumberList.DataSource = DrpDownSrc;
BranchNumberList.DataTextField = "BranchName";
BranchNumberList.DataValueField = "LocationID";
BranchNumberList.DataBind();
BranchNumberList.Items.Insert(0, "Select a branch");
try
{
BranchNumberList.SelectedValue = this.Request.Cookies["default_Loc"].Value;
}
catch (Exception)
{
BranchNumberList.SelectedIndex = 0;
}
}
我总是得到这个.Request.Cookies [" default_Loc"]'是空的。
谁能看到我哪里出错了?
答案 0 :(得分:2)
您的代码看起来不错。
问题可能是服务器永远不会将cookie发送到浏览器,或者浏览器没有按照您的意愿处理cookie。
我建议的第一件事是确定cookie是否被发送到浏览器。使用Fiddler或Wireshark等工具检查服务器和浏览器之间的HTTP流量。
如果服务器未发送cookie,请执行以下检查:
web.config
文件中搜索httpCookies部分。如果它存在,请检查requireSSL
设置。如果requireSSL
设置为true(即https),但网站尝试通过普通http发送cookie,则cookie不会被发送到浏览器。Cookies.Clear
或Cookies.Remove
。如果将cookie发送到浏览器,下一步是查看浏览器是否正确处理cookie。请至少在两种不同的浏览器中尝试以下操作(例如Internet Explorer,Google Chrome,FireFox等):
http://www.my_web_site.com/
)(请参阅Internet Explorer Cookie Internals (FAQ)),IE 11在IFrames和modal popups(SO discussion)中存在Cookie问题。 IE 11还更改了其用户代理字符串,这甚至导致more problems带有cookie。