저는 ASP.NET MVC에서 프로젝트를 진행하고 있으며 일부 데이터를 저장하기 위해 세션을 사용해야합니다. 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>
}
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>
그러나 문제는 그 때마다 내가있다 :
이
코드입니다 데이터를 t에서 얻으려고 시도하십시오. hat Session, null을 리턴한다. 또한 System.Web.HttpContext.Current.Session [ "getSession"]을 사용하여 Session을 설정하려고했지만 여전히 변경되지 않았습니다. 또한 Web.config에서 시간 초과를 변경하고 쿠키를 제거하려고 시도했지만 여전히 동일합니다.p.s. 그 값을 Session에 저장해야하는데, 다른 메서드에서 값을 변경하고 다른 메서드에서 설정 한 새 값을 검색하면됩니다. GetWaiting 방법에
귀하의 스크립트에있는 @Session [ "getSession"]'은 면도기 코드입니다. 브라우저에서보기 전에 서버에서 평가됩니다. 일부 서버 측 코드가 그것을 변경했기 때문에 '마술처럼'업데이트하지 않습니다. 업데이트 된 값을 다시 클라이언트에 보내야합니다. –
'public ActionResult GetWaiting()'메소드는'Home'() 클래스 블록 안에 있어야합니다. mvc의'Controller' 클래스를 상속 받아야합니다. 세션은 액션 메소드 내에서 설정되어야합니다. 코드에 몇 가지 오타가 있습니다. – stom
@StephenMuecke 방금 업데이트 할 수 있으면 빨리 내 질문을 업데이 트했습니다. –