페이지 클래스 (Global.asax가 아님)에 정의 된 정적 변수에 몇 가지 정보가 있습니다. 다음과 같은 코드에서만 변수를 선언합니다.
protected static int SomeGlobalUnsecureID;
protected static string SomeGlobalUnsecureString;
PageLoad 이벤트에서 변수를 정의합니다. 예를 들어 데이터베이스에서 ID를 확인하고 SomeGlobalUnsecureID와 다른 경우 SomeGlobalUnsecureID 및 String을 다른 곳에서 업데이트하고 그렇지 않으면 그대로 둡니다. 이것은 내 앱에서 완벽하게 안전합니다. 논리 (즉, 이러한 데이터는 안전하지 않고 누구나 액세스 할 수 있으며 문제 없음) 내가 성취하고 싶은 유일한 것은
연결된 사용자에 관계없이 동일한 양의 메모리를 보유
영구 정보가 '메모리'의 정보와 다른 경우에만 변경하십시오 (실제로 문자열을 읽는 데 시간이 많이 걸리기 때문입니다.
이제 PageLoad에서 확인 했으므로 다시로드 된 페이지에서 문제가 없습니다. 그러나 내 페이지는 WebMethods로 가득 차 있으며 때로는 정적 변수가 0으로 표시되는 것을 볼 수 있습니다. 그리고 이상한 부분은 다음과 같습니다. 정적 변수가 0이 되어도 세션은 여전히 활성 상태입니다 (따라서 서버 또는 앱 풀 재시작 없음 등).
이것은 나에게 정말 이상합니다. 정적 변수는 응용 프로그램이 종료 될 때까지 값을 유지한다고 가정합니다. 그러나 세션이 만료되지 않았더라도 정적 변수는 0이됩니다. 당신은 무엇을 제안합니까? 응용 프로그램 변수를 사용하는 것이 더 나은 선택입니까? 웹에서 읽은 모든 문서는 응용 프로그램 변수 대신 정적 변수를 제안합니다. 어떻게 든 다르게 선언해야합니까?