会话项始终为空

时间:2015-07-17 18:59:28

标签: asp.net asp.net-mvc session

我有一个简单的控制器操作,设置一个名为" firm"的会话变量。到我验证的模型。

[HttpPost]
    public ActionResult ClientProfile(ClientProfileFormModel model)
    {
        if (ModelState.IsValid)
        {
            System.Web.HttpContext.Current.Session["firm"] = model;
            return View("ClientProfileConfirmation",model);
        }

        return View(model);
    }

用户点击确认链接后,链接会将其发送到此操作:

public ActionResult ClientProfileConfirmationSubmit()
    {

        var model = (ClientProfileFormModel)System.Web.HttpContext.Current.Session["firm"];

        string emailToAdminBody = GenerateFirmProfileAdminEmail(model);
        EmailLogic.Instance.SendEmail("test@test.com", "test@test.com", "Firm profile from " + model.FirmAddress.Name, emailToAdminBody);

        return View(model);
    }

我的问题是:模型为空。通过调试器,我可以确认"公司"会话变量已设置。但是当输入第二个动作时,会话变量不再存在,并且模型被设置为null。我很难过这可能是什么。我已经在Stackoverflow上搜索了解决方案。

我已经尝试过System.Web.HttpContext.Current.Session []和Session []。

我尝试添加SessionStateModule,就像这个答案所暗示的那样:HttpContext.Current.Session is null when routing requests

我尝试在本地计算机上手动启动ASP状态服务。

我甚至尝试将模型更改为一个简单的字符串,并尝试检索它,没有运气,因此它不会成为导致问题的模型。

1 个答案:

答案 0 :(得分:0)

原来我的web.config中没有启用会话。

<configuration>
  ...
<system.web>
  <pages enableSessionState="true">
    <controls>
    ...
    </controls>
  </pages>
  ...
  <sessionState cookieless="AutoDetect" mode="StateServer" timeout="22" />
</system.web>
  ...
</configuration>