문제

다음은 세션 상태에서 객체를 일반적으로 처리하는 방법입니다. 세션 이름으로 const 문자열이 있고 객체에 대한 get 및 set 속성이 있습니다.

내가 궁금했던 것은 'Session.Remove()' 호출이 필요한지(깨끗하고 정돈된 상태를 유지하기 위해), 상당한 오버헤드가 있고 이러한 제거를 수행하는지 여부였습니다.

세션이 있습니다. 기본적으로 기분이 좋아지고(OCD도 알고 있습니다) 세션이 더 깔끔해진 것 같은 느낌이 들기 때문에 제거하세요. 하지만 필요하지 않은지 알고 싶습니다.

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;
    }
}

감사해요!

도움이 되었습니까?

해결책

만약 너라면 정말 안전하려면 개체를 IDisposable로 변환해 보고 성공하면 Dispose를 호출하세요.

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

그 이외의,

 Session[sesMyObject] = value

와 거의 똑같다

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

다른 팁

그것은 과잉이다.추천 MSDN

이름 매개 변수가 기존 세션 상태 항목을 말하면 기존 항목은 지정된 값으로 덮어 씁니다.

Session[sesMyObject] = value;

더 짧고 읽기 쉬우며 약간 더 나은 성능을 제공해야 하지만 이 코드가 연속적으로 여러 번 반복되지 않는 한 차이가 없어야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top