繁体   English   中英

响应重定向使session_end在全局asax中

[英]response redirect makes session_end in global asax

由于会话为空,我感到沮丧。
当我单击保存按钮时,我将数据从后面的代码保存到数据库,如果成功,我将使用语法将用户重定向到主项目页面:

Response.Redirect("~/Admin/Projects.aspx?i=esc&prjName=abc",'false');

但它使我的会话为空。
它进入Globex.asax页,并执行Session_End并使所有会话为空。

我什至尝试了Server.Transfer但是由此浏览器的URL保持不变,客户端也不希望这样做。甚至在我读到的Server.Execute也用于重定向的地方,但显示出了错误的结果。

我可以使用Response.Redirect而没有此会话为null的问题吗?

(在此页面中,我正在创建文本文件来存储一些详细说明,如果成功,则将重定向到另一个页面。)

更新::

这是我的按钮点击代码

protected void lnkbtnAddDescription_Click(object sender, EventArgs e)
        {
            try
            {
                if ((!hidProjId.Value.ToString().Equals("") || !hidEditProjId.Value.ToString().Equals("")) && !txtDescription.Value.ToString().Equals(""))
                {
                    //ProjectDescription
                    int projId = 0;
                    if (!hidIsEdit.Value.ToString().Equals(""))
                    {
                        projId = Convert.ToInt32(hidEditProjId.Value.ToString());
                    }
                    else
                    {
                        projId = Convert.ToInt32(hidProjId.Value.ToString());
                    }

                    ProjectM proj = new ProjectM();
                    proj.LoadByKey(projId);

                    string prj = proj.ProjectName.ToString().Replace(" ", "-");

                    string strDirectoryPath = Server.MapPath("~/ProjectDescription/") + proj.ProjectId + "-" + prj;
                    if (!Directory.Exists(strDirectoryPath))
                    {
                        Directory.CreateDirectory(strDirectoryPath);

                        string filePath = strDirectoryPath + "/" + proj.ProjectId + "-" + prj + ".txt";
                        string strDescription = txtDescription.Value.ToString().Replace("<br />", "<p>");
                        createTextFile(filePath, strDescription);

                        string dbDirectoryPath = "~/ProjectDescription/" + proj.ProjectId + "-" + prj + "/" + proj.ProjectId + "-" + prj + ".txt";
                        proj.Description = dbDirectoryPath.ToString();
                        proj.IsNew = false;
                        proj.Save();

                        if (!hidIsEdit.Value.ToString().Equals(""))
                        {
                            //Server.Execute("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString() + "",false);
                            Session["dsProj"] = null;
                            Session["editProjId"] = null;
                            Session["fname"] = hidFname.Value.ToString();
                            Session["UserId"] = hidUserId.Value.ToString();
                            Session["role"] = hidRole.Value.ToString();
                            Response.Redirect("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString());
                        }
                        else
                        {
                            //Server.Execute("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString() + "",false);
                            Session["dsProj"] = null;
                            Session["editProjId"] = null;
                            Session["fname"] = hidFname.Value.ToString();
                            Session["UserId"] = hidUserId.Value.ToString();
                            Session["role"] = hidRole.Value.ToString();
                            Response.Redirect("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString());
                        }

                    }
                    else
                    {
                        Directory.Delete(strDirectoryPath, true);
                        Directory.CreateDirectory(strDirectoryPath);

                        string fileName = proj.ProjectName.ToString().Replace(" ", "-");

                        string filePath = strDirectoryPath + "/" + proj.ProjectId + "-" + fileName + ".txt";
                        string strDescription = txtDescription.Value.ToString().Replace("<br>", "<p>");
                        createTextFile(filePath, strDescription);

                        string dbDirectoryPath = "~/ProjectDescription/" + proj.ProjectId + "-" + proj.ProjectName.ToString() + "/" + proj.ProjectId + "-" + proj.ProjectName.ToString() + ".txt";
                        proj.Description = dbDirectoryPath.ToString();
                        proj.IsNew = false;
                        proj.Save();

                        if (!hidIsEdit.Value.ToString().Equals(""))
                        {
                            //Server.Execute("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString() + "", false);
                            Session["dsProj"] = null;
                            Session["editProjId"] = null;
                            Session["fname"] = hidFname.Value.ToString();
                            Session["UserId"] = hidUserId.Value.ToString();
                            Session["role"] = hidRole.Value.ToString();
                            Response.Redirect("~/SuperAdmin/Projects.aspx?i=esc&prjName=" + proj.ProjectName.ToString());
                        }
                        else
                        {
                            //Server.Execute("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString() + "", false);
                            Session["dsProj"] = null;
                            Session["editProjId"] = null;
                            Session["fname"] = hidFname.Value.ToString();
                            Session["UserId"] = hidUserId.Value.ToString();
                            Session["role"] = hidRole.Value.ToString();
                            Response.Redirect("~/SuperAdmin/Projects.aspx?i=sc&prjName=" + proj.ProjectName.ToString());
                        }
                    }
                }
            }
            catch (Exception)
            {

            }
        }

        private void createTextFile(string filePath, string strDescription)
        {
            try
            {   
                StreamWriter w = File.CreateText(filePath);
                w.WriteLine(strDescription);
                w.Flush();
                w.Close();
            }
            catch (Exception ex)
            {

            }
        }

在重定向到下一页之前,还要在按钮单击事件中分配现有的会话值。

这样可以解决问题。

希望这对您有所帮助, 本地回发后ASP.NET会话变为空

这认为您的问题与某种拒绝权限有关,这使您的会话nulling

创建或保存文本文件时肯定存在问题。 这可能是在调用Session_End,因此您将所有值都设置为null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM