문제
다음은 세션 상태에서 객체를 일반적으로 처리하는 방법입니다. 세션 이름으로 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;
더 짧고 읽기 쉬우며 약간 더 나은 성능을 제공해야 하지만 이 코드가 연속적으로 여러 번 반복되지 않는 한 차이가 없어야 합니다.
제휴하지 않습니다 StackOverflow