首页 > 解决方案 > C# Http Session 在通过 AJAX 首次调用不同的控制器操作时已过时

问题描述

我有 1 个名为“MainController”的控制器,其中有 2 个操作方法都访问会话。我面临一个问题,其中我的会话在通过 AJAX 调用第二种方法时已过时。

  1. 会话在 Method1 中设置
  2. Method2 通过 Ajax 从 Method1 的 cshtml 调用
  3. Method2 中的会话已过时或为空

任何人都面临同样的问题,可以摆脱一些想法,为什么?作为参考,我将我的控制器的简化代码放在下面:

public class MainController : Controller
{
    public ActionResult Index(string postalCode)
    {
        //THIS IS METHOD1****
        Session["PostalCode"] = postalCode;
        return View();
    }

    public ActionResult Content()
    {
        //THIS IS METHOD2 WHERE postalCode is not the same as what I set in METHOD1****
        string postalCode = Session["PostalCode"];
        return View();
    }
}

这是我在 Index.cshtml 中的 ajax 调用:

 $.ajax({
    url: '@Url.Action("Content", "Main")',
    dataType: 'html',
    type: 'POST',
    success: function (data) {
        //success
    },
    error: function (jqXHR, error) {
        //error handling
    }
});

标签: c#sessioncontrollernullhttpsession

解决方案


推荐阅读