我正在开发一个关于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中更改超时并删除cookieless但仍然相同。
P.S。我需要将该值存储到Session,beucase值正在被另一个方法更改,我只需要检索由另一个方法设置的新值。
答案 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);
}