2012-03-08 2 views
11

나는 asp.net 프로젝트에 C# 코드가있다. GlobalVariable이라는 정적 클래스가 있습니다. 여기에 현재 선택된 제품과 같은 정보가 저장되어 있습니다.Asp.net 세션 변수

그러나 웹 사이트를 사용하는 사용자가 두 명인 경우 선택한 제품을 변경하면 모두에게 변경됩니다. 정적 변수는 모두에게 통용되는 것처럼 보입니다.

나는 (C# 코드에서) C# 코드에서만 사용되는 일종의 세션 변수를 만들고 싶지만 페이지뿐만 아니라 모든 클래스에서 사용하고 싶습니다.

+0

정적 변수는 응용 프로그램을 통해 액세스 할 수 있습니다. 세션은 사용자 로그인 및 로그 아웃 내에 변수를 저장하고 액세스하는 데 사용됩니다. 데이터베이스를 사용하여 변수가 세션 및 응용 프로그램보다 오래 유지되게하십시오. 여러 응용 프로그램간에 데이터를 공유하려면 분산 캐시를 사용하고 [ASP.NET 세션] (http://www.alachisoft.com/ncache/session-index.html)을 캐시에 저장하십시오. –

답변

22

예 정적 변수는 전체 응용 프로그램에 의해 공유되며 사용자/세션에 대해 아무런 영향을 미치지 않습니다.

비 페이지 클래스에서 Session 개체에 액세스하려면 HttpContext.Current.Session을 사용해야합니다.

+0

와우, 너무 간단 ^^ 고마워. – Amaranth

+3

@Mathieu 항상 모든 요청에 ​​대해 세션이 생성되는 것은 아니므로 null을 확인하십시오. 예를 들어, .ashx 파일과 같은 간단한 핸들러는 Session 객체를 만들기 위해 기본적으로 설정되지 않습니다. –

+0

Apropos, http://stackoverflow.com/questions/1382791/asp-net-what-to-do-if-current-session-is-null/1382811#1382811 – driis

8

GlobalVariable은 잘못된 이름입니다. 그것이 무엇이든지간에 그것은 세션 당 그것이 static이되어서는 안됩니다. 이 대신 같은 것을 할 수 있습니다 : 당신은 어느 Session 컬렉션 전 세계적으로 액세스 할 수 있도록하려고해서는 안

// store the selected product 
this.Session["CurrentProductId"] = productId; 

. 필요한 경우에만 Session을 사용하여 필요한 데이터 만 전달하고 설정하십시오.

다음은 MSDN에서 session storage in ASP .NET으로 작업하는 방법에 대한 개요입니다.

+0

세션 사용 방법에 대한 예제를 제공해 주셔서 감사합니다. . – Ernest

7

당신은 일종의 질문에 답변했습니다. 대답은 세션 변수에 있습니다. GlobalVariable 클래스에서 세션 변수에 의해 지원되는 속성을 배치 할 수 있습니다.

예 :

public string SelectedProductName 
{ 
    get { return (string)Session["SelectedProductName"]; } 
    set { Session["SelectedProductName"] = value; } 
}