我之前已经问过这个问题了,但现在我发现了更多细节和一些更奇怪的事情。
我有一个Web项目,它有2个.aspx文件,可以将数据与会话连接起来。没有任何额外的代码,这是有效的,当我添加我的额外代码时,会话不再有效。有人知道为什么吗?
会话工作的代码:
Form1中:
protected void Page_Load(object sender, EventArgs e)
{
Session["data"] = "5";
}
protected void ButtonOk_Click(object sender, EventArgs e)
{
string s = (string)(Session["data"]); // 5 when i look while debugging
Response.Redirect("~/Form2.aspx", false);
}
表格2:
protected void Page_Load(object sender, EventArgs e)
{
string s = (string)(Session["data"]); // s = 5 when i look while debugging
}
protected void ButtonOk_Click(object sender, EventArgs e)
{
string s = (string)(Session["data"]); // s = 5 when i look while debugging
}
会话不起作用的代码:(我使用2个类库(逻辑和数据访问,我从json webservice获取数据并将其解析为我的表单)。 Form1中:
protected void Page_Load(object sender, EventArgs e)
{
Logic logic = new Logic();
logic.login(credentials);
List<AppointmentExtParticipant> opleidingVolgers = logic.getOpleidingVolgers();
foreach (AppointmentExtParticipant app in opleidingVolgers)
{
if (app.contact != null)
{
Relation rel = logic.getRelationData(app.contact.FK_RELATION);
DropDownListUsers.Items.Add(app.ToString() + " " + rel.ToString());
}
}
Session["data"] = "5";
}
protected void ButtonOk_Click(object sender, EventArgs e)
{
string s = (string)(Session["opleidingvolger"]); // s = 5 when i look while debugging
Response.Redirect("~/Form2.aspx", false);
}
表格2:
protected void Page_Load(object sender, EventArgs e)
{
string s = (string)(Session["data"]); // s = null when i look while debugging
}
protected void ButtonOk_Click(object sender, EventArgs e)
{
string s = (string)(Session["data"]); // s = null when i look while debugging
}
当然,我简化了这里的名字,所以人们可以理解,thnx!
编辑:
在这里,我从另一个网址上托管的网络服务获取数据。
答案 0 :(得分:1)
会话通常使用cookies。您正在使用session
创建新的CookieContainer
因此您需要在请求之间保留会话cookie。这就是为什么我们使用 CookieContainer container = new CookieContainer();
HttpWebRequest req = WebRequest.Create(
"") as HttpWebRequest;
req.CookieContainer = container;
所以添加
mysqlclient