会话变量随较大文件丢失

时间:2019-05-20 09:20:13

标签: c# asp.net-core

我们提供了一个Web应用程序,允许用户分析源文件。总体结构如下:

  1. 要求用户上传文件(存储在会话变量中);
  2. 要求用户根据提供的输入文件做出几个选择;
  3. 为用户提供了分析。

这一直很好,直到最近上传了一个更大的文件(15 MB)。从步骤1到步骤2,文件仍存储在会话变量中。但是,在步骤2中单击任何按钮都将导致会话变量丢失。较小的文件可以按预期工作。

我们进行了一些研究,但以下内容不应成为问题:

  • 我们不处理超时问题;
  • 我们未在DefaultAppPool中设置虚拟内存限制,并且有足够的可用RAM。

为进一步说明,我在下面添加了一些代码。

在第2步中,我们检查会话变量之一(具有键CasesSessionKey)的存在,并创建另一个会话变量(具有GraphSessionKey键)。两者均成功完成:

if (!HttpContext.Session.Keys.Contains(CasesSessionKey))
            {
                return RedirectToAction(nameof(Index));
            }

            var processMiningResult = HttpContext.Session.GetFromJson<ProcessMiningResult>(CasesSessionKey);
            HttpContext.Session.SetAsJson(GraphSessionKey, graph);

然后,在步骤3中,不存在会话变量。较小的文件没有此问题:

            if (!HttpContext.Session.Keys.Contains(CasesSessionKey) ||
                !HttpContext.Session.Keys.Contains(GraphSessionKey))
            {
                return RedirectToAction(nameof(Index));
            }

我希望这两个会话变量在第3步中仍然可用,但事实并非如此。是什么原因导致此问题?

0 个答案:

没有答案
相关问题