我们提供了一个Web应用程序,允许用户分析源文件。总体结构如下:
这一直很好,直到最近上传了一个更大的文件(15 MB)。从步骤1到步骤2,文件仍存储在会话变量中。但是,在步骤2中单击任何按钮都将导致会话变量丢失。较小的文件可以按预期工作。
我们进行了一些研究,但以下内容不应成为问题:
为进一步说明,我在下面添加了一些代码。
在第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步中仍然可用,但事实并非如此。是什么原因导致此问题?