c# - session 值在回发和页面刷新时变为空

标签 c# asp.net visual-studio session

在我的网页中,我无法在回发和页面刷新时获取 session 变量。

问题是

如果页面不是 IsPostback,那么我可以获取 session 变量。 但如果页面回发,则会出现错误。

当我将任何文件上传到服务器时会出现此错误。我正在使用 asynchfileupload 上传图像并将其存储到 session 变量。然后单击按钮,我将数据保存到目录。

但这种情况并不经常发生。

这是我的代码

protected void AsynImageLoader_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {
        if (AsynImageLoader.PostedFile != null)
        {
            string extension = System.IO.Path.GetExtension(AsynImageLoader.PostedFile.FileName);

            if (extension == ".jpg" || extension == ".gif" || extension == ".jpeg" || extension == ".png")
            {
                HttpPostedFile file = AsynImageLoader.PostedFile;
                Session["TempImage"] = ReadFile(file);
            }
        }
    }

点击按钮

       var storedImage = Session["TempImage"] as byte[];
       String Strthumbpath = Server.MapPath("content\\thumbnail\\");
       if (storedImage != null)
       {
           System.Drawing.Image image = GetImage(storedImage);

           if (image != null)
           {
           image.Save(Strthumbpath + strFileName);
           }

           }
///inserting values to datbase.

经过大量谷歌搜索后,我了解到当任何文件添加到任何子目录或编辑 webconfig 时,都会导致应用程序重新启动。

如果是这样我该如何解决..

提前致谢。

最佳答案

好吧,我刚刚使用 ASP.NET MVC 进行了测试,它对我来说工作正常。 我所做的是创建两个 Action ,一个用于设置 session 变量,另一个用于创建文件,所以我将默认的 asp.net mvc 应用程序主 Controller 修改为:

  public ActionResult Index()
    {
        ViewBag.Message = Session["Sample"];            

        return View();
    }

    public ActionResult About()
    {
        return View();
    }

    public ActionResult AddSessionVariable()
    {
        Session["Sample"] = "Sample session variable";
        return RedirectToAction("Index");
    }

    public ActionResult CreateFile()
    {
        var bmp = new Bitmap(100, 100);            
        bmp.Save(Server.MapPath(string.Format(@"\Images\{0}", DateTime.Now.Ticks)));
        return RedirectToAction("Index");
    }

因此,当我转到 AddSessionVriable 时,它​​会向 session 添加一些内容,并且索引操作会将该 session 变量呈现到页面,我可以看到,它并没有消失。然后我去创建文件,我的 session 变量仍然存在,所以不会重新启动应用程序。我很确定,Web 窗体应用程序的工作方式相同,可能是您在保存文件时丢失了一些异常(例如,由于缺少权限)并重新启动了您的应用程序。

关于c# - session 值在回发和页面刷新时变为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5866193/

相关文章:

c# - C# 中的内存压力测试

c# - 解析器错误消息 : The file '/Site.master' does not exist

asp.net - WindowsAzure.Storage 生产中出现 403 错误

visual-studio - Roslyn 是否与 ReSharper 冲突?

c++ - 你如何组合大型 C++ 项目的组件?

c# - 将 <ItemTemplate> 与复选框和标签一起使用

C# 按名称中的自然数顺序对文件进行排序?

c# - longListSelector 项目上的 TiltEffect,windows phone 8

javascript - javascript中的电子邮件验证

visual-studio - Visual Studio 中的 MSpec 测试适配器可以运行行为吗?