2014-06-11 4 views
2

저는 .NET을 처음 접했으며 다음과 같은 문제점이 있습니다. Window 인증을 사용하는 내부 응용 프로그램을 작성 중입니다. 세션 기간 동안 임시 개체를 만들어 데이터베이스에 저장해야합니다. 세션이 끝나면 더 이상 그 개체가 필요하지 않습니다..NET MVC5 세션이 종료되지 않습니다.

나는 객체를 생성하는 Session_start에 코드를 가지고 있으며 그것을 파괴하는 Session_end에 코드가 있습니다.

protected void Session_Start(Object sender, EventArgs e) 
    { 
     MyDbContext db = new MyDbContext(); 
     MyObject o = new MyObject() { Temporary = 1 }; 
     db.MyObjects.Add(o); 
     db.SaveChanges(); 
     HttpContext.Current.Session.Add("my_object_id", o.ID); 
    } 

    protected void Session_End(Object sender, EventArgs e) 
    { 
     MyDbContext db = new MyDbContext(); 
     try 
     { 
      MyObject o = db.MyObjects.Find(HttpContext.Current.Session["my_object_id"]); 
      db.MyObjects.Remove(o); 
      db.SaveChanges(); 
     } 
     catch (Exception) 
     { 
      //do nothing 
     } 
    } 

는 또한

<sessionState mode="InProc" timeout="30" /> 

내 문제는 이러한 개체가 생성하지만, 파괴되지 않습니다되고 있음을 내 config 파일에서 다음 XML 항목이있다. 현재 우리는 개발 서버에서 응용 프로그램을 호스팅하고 있으며 Visual Studio 내부 iisexpress 서버에서 로컬로 실행하고 있습니다.

session_end가 호출되는 것을 확인하기 위해 일종의 로깅을 추가하려고합니다. 이 응용 프로그램에는 일종의 로그 아웃 메커니즘 (Windows 인증이있는 내부 앱)이 없습니다.

나는이 권리조차도 잘 모르겠다. 어떤 도움을 주시면 감사하겠습니다.

+0

응용 프로그램 풀의 수명은 무엇입니까 : 현재 설정을 찾을 수 있습니다

? – jgauffin

+0

나는 정직하게 몰라. 확인 방법이 있습니까? – Smartelf

+1

http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/ 세션 시간 초과보다 작 으면 세션 종료 이벤트를받지 못할 수도 있습니다. – jgauffin

답변

관련 문제