2009-02-04 4 views
3

다음은 일반적으로 세션 상태에서 개체를 처리하는 방법입니다. 세션 이름으로 const 문자열을 가져온 다음 개체에 대한 get 및 set 속성을 사용합니다.세션 상태 제거 및 오버 헤드 추가

'Session.Remove()'호출이 필요한 경우 (깨끗하고 깔끔하게 유지하기 위해) 그리고 상당한 오버 헤드가 있었고이 제거 작업을 수행했다면 궁금한 것이 었습니다.

나는 Session.Remove를 기본적으로 가지고 있기 때문에 기분이 좋아지며 (OCD i know) 세션이 깨끗해 졌다고 느낄 수 있지만 필요하지 않은지 알고 싶습니다. 답변 당

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}"; 
public MyObject MyObjectProperty 
{ 
    get 
    { 
     return Session[sesMyObject] as MyObject; 
    } 
    set 
    { 
     Session.Remove(sesMyObject); 
     Session.Add(sesMyObject, value); 
    } 
} 

편집 가 난 다음에 내 속성을 변경 한 아래 :

private const string sesMyObject = "{C2CC72C3-1466-42D4-8579-CAA11F261D55}"; 
public MyObject MyObjectProperty 
{ 
    get 
    { 
     return Session[sesMyObject] as MyObject; 
    } 
    set 
    { 
     Session[sesMyObject] = value; 
    } 
} 

감사합니다!

답변

2

정말로이 안전하려면 개체를 IDisposable로 변환하고 성공하면 Dispose를 호출하십시오. 그 외에는

IDisposable sesDispObj = Session[sesMyObject] as IDisposable; 
if (sesDispObj != null) 
    sesDispObj.Dispose(); 

,

Session[sesMyObject] = value 

그것은 잔인한 거의 같은

Session.Remove(sesMyObject);   
Session.Add(sesMyObject, value); 
2

등이다. name 매개 변수는 기존 세션 상태 항목을 참조하는 경우 MSDN

을 다스 상기 기존 항목은 지정된 값으로 덮어 쓰기한다.

1
Session[sesMyObject] = value; 

읽기 간단하고 짧은, 약간 더 나은 성능을 가지고 있어야하지만,이 코드가 연속으로 아주 여러 번 반복되지 않는 한, 그것은 변화를하지 않아야합니다.