无法更改或从Controller获取会话

时间:2017-12-04 08:32:52

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

我正在开发一个关于ASP.NET MVC的项目,我需要使用Session来存储一些数据。

这是代码:

HomeController.cs

public class HomeController : Controller
{
    public HomeController()
    {
    }

    public void ChangeValue(){
        //I get userId with some other data from db and set to session
        //but for the sake of simplicity i set here to 10.
        Session["getSession"] = "10";
    }

    //I use this method only for getting the changed session value
    public ActionResult GetWaiting()
        {
            //now i just need to return the changed value
            return Json(Session["getSession"], JsonRequestBehavior.AllowGet);
        }
}

的Web.config

<system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
    <httpModules>
          <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
    <sessionState mode="InProc" timeout="1" cookieless="true" />
</system.web>

Index.cshtml

<h1 id="session"></h1>
@section scripts{

<script>
    $(function () {
        function getWait() {
            $.ajax({
                url: 'http://localhost:50325/Home/GetWaiting',
                success: function (data) {
                    $('#session').text('@Session["getSession"]');
                }
            });
        }

        setInterval(function () {
            getWait();
        }, 1000);
})
</script>

}

但问题是,每次我尝试从该Session获取数据时,它都会返回null(就像我从未使用过它一样)。 我也尝试使用System.Web.HttpContext.Current.Session [“getSession”]设置Session但仍然相同,它不做任何更改。 我也尝试在Web.config中更改超时并删除co​​okieless但仍然相同。

P.S。我需要将该值存储到Session,beucase值正在被另一个方法更改,我只需要检索由另一个方法设置的新值。

1 个答案:

答案 0 :(得分:1)

在GetWaiting方法中返回session的值,如下所示

public ActionResult GetWaiting()
{
    //I get userId with some other data from db and set to session
    //but for the sake of simplicity i set here to 10.
    Session["getSession"] = "10";
    var data = Session["getSession"];
    return Json(data, JsonRequestBehavior.AllowGet);
}

并在脚本中指定返回的值。

success: function (data) {
    $('#session').text(data);
}