【问题标题】:What is the maximum size a session variable can hold?会话变量可以容纳的最大大小是多少?
【发布时间】:2010-12-17 20:11:23
【问题描述】:

会话变量可以容纳的最大大小是多少?我正在尝试将对象存储在会话变量中,如果对象大小低于 80 KB,则工作正常,如果大小大于 80 KB,则在检索时出现异常。

如何增加会话变量大小?

这种行为发生在我的生产服务器上,在开发机器上我可以存储 500 KB 以上的大对象等。

我正在实现类似...http://aspalliance.com/1221_CodeSnip_Uploading_Multiple_Files_At_Once.all

这是我的代码:

private static int count = 0;

protected void Upload_Click(object sender, EventArgs e)
{
    for (int loopCount = 0; loopCount < count; loopCount++)
    {
        HtmlInputFile hif = (HtmlInputFile)Session["myupload" + loopCount];
        String filePath = Server.MapPath("~/AdvImages/") + loopCount.ToString() + "_" + hif.PostedFile.FileName;
        hif.PostedFile.SaveAs(filePath);
        Session.Abandon();
    }
}
protected void btnAdd_Click1(object sender, EventArgs e)
{
    Session["myupload" + count] = FileUpload1;
    count++;
}

谢谢

【问题讨论】:

  • @Pina,实际上我正在存储 fileupload 对象,如果文件大小大于 80 KB,我会收到“无法访问已关闭文件”之类的异常
  • 您使用的是哪种会话状态模式?进程内? SQL?
  • 你能发布你的代码吗?您在 cmets 中说过,如果超过 80k,您正在做一些不同的事情,所以这听起来不像是大小问题,只是在这种情况下您的代码有问题。
  • @Sosh,其实我正在实现这个东西aspalliance.com/… 多个文件加载一次
  • @Sosh,我 100% 确定,我的代码没有问题,因为我已经检查了所有替代方案,最后我发现了这个问题

标签: asp.net session session-variables


【解决方案1】:

尝试将 requestLengthDiskThreshold 更改为:

<system.web>
    <httpRuntime executionTimeout="90" 
                 maxRequestLength="20000" 
                 useFullyQualifiedRedirectUrl="false" 
                 requestLengthDiskThreshold="8192"/>
</system.web>

【讨论】:

    【解决方案2】:

    据我所知,将文件存储在会话变量中是一个糟糕的选择!相反,您可以考虑将它们放入临时位置,然后单击上传时,您可以将它们放入实际存储中。稍后您可以清除临时存储。

    【讨论】:

      猜你喜欢
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2012-09-24
      • 1970-01-01
      • 2010-11-07
      • 2012-07-18
      • 1970-01-01
      相关资源
      最近更新 更多