2017-12-04 18 views
0

저는 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 방법에

+0

귀하의 스크립트에있는 @Session [ "getSession"]'은 면도기 코드입니다. 브라우저에서보기 전에 서버에서 평가됩니다. 일부 서버 측 코드가 그것을 변경했기 때문에 '마술처럼'업데이트하지 않습니다. 업데이트 된 값을 다시 클라이언트에 보내야합니다. –

+0

'public ActionResult GetWaiting()'메소드는'Home'() 클래스 블록 안에 있어야합니다. mvc의'Controller' 클래스를 상속 받아야합니다. 세션은 액션 메소드 내에서 설정되어야합니다. 코드에 몇 가지 오타가 있습니다. – stom

+0

@StephenMuecke 방금 업데이트 할 수 있으면 빨리 내 질문을 업데이 트했습니다. –

답변

1

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); 
} 
+0

내 실제 코드로 제 질문을 업데이트했습니다. 가능한 한 빨리. –

+0

@ErtanHasani,이 대답은 작동하고 값 10을 클라이언트에 반환합니다. 사용자는 html 요소의 값을 채울 수 있습니다. – stom

+0

그래,하지만 내가 정말로 필요한 이유는 다른 방법으로 설정된 현재 sessionValue를 얻는 것입니다. 따라서 GetWaiting은 var data = Session [ "getSession"]이어야하고, 그 데이터를 얻으면 null을 반환합니다. –