最近,我在asp.net会话中遇到了一个奇怪的问题,这个问题实际上发生在下面的示例代码中。
创建会话的代码(Login.aspx.cs)
public partial class Login : System.Web.UI.Page
{
protected async void btnLogin_Click(object sender, EventArgs e)
{
await request_login();
if (canLogin == true)
{
Response.Redirect("Dashboard.aspx");
}
}
private async Task request_login()
{
// call web service with httpClient
Session["key"] = "session object to be stored";
}
}
调用会话的代码(Dashboard.aspx.cs)
public partial class Dashboard : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
String sessionDetails = Session["key"] as String;
}
}
当我运行这段代码时,我从Session["Key"]
获得了一个空字符串。通过在我的home.aspx文件中添加一个虚拟会话(本质上是网站的默认页面),我设法用一个奇怪的修复方法解决了这个问题。
Home.aspx.cs
public partial class Home : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//wierd fix that allows session access
Session["home"] = "fromHome";
}
}
在添加Session["home"]
之后,我的Session["key"]
能够完美地工作。为什么会发生这种事?Session["key"]
不应该在不需要在home.aspx.cs中添加Session["home"]
的情况下完美地工作吗?
发布于 2016-09-11 06:47:16
试试这个:
public partial class Login : System.Web.UI.Page
{
protected async void btnLogin_Click(object sender, EventArgs e)
{
await request_login();
if (canLogin == true)
{
Response.Redirect("Dashboard.aspx",false);
}
}
private async Task request_login()
{
// call web service with httpClient
Session["key"] = "session object to be stored";
}
}
因此,这不会中止线程。
如果您想知道发生这种情况的确切原因,请访问以下网站:_
https://stackoverflow.com/questions/39433105
复制相似问题