2012-07-10 3 views
6

나는 웹 개발 및 ASP.net 아주 새로운 오전 그러나 나는 다음과 같은 질문 궁금 해서요 : 나는 웹 페이지에서 정적 변수를 선언하고 여러 사용자가 동시에 같은 페이지에 액세스하면정적 변수 간섭 ASP.net?

합니다. 이 정적 인 은 각 사용자에게 고유 한 변수입니까, 아니면 다른 사용자를 방해합니까?

감사

답변

7

예, 그것은 사용자간에 간섭, 단일 사용자가 동시 요청 사이 것입니다. ASP.NET에서 정적 필드 (대부분의 다른 개발 환경)를 피하십시오.

여기서 수행중인 작업 또는 요청 자체 (양식 데이터, 쿠키 등)의 일부로 세션 상태를 사용하는 것을 고려하십시오.

2

인가이 정적 각 사용자

가 다른 사용자를 방해하는 고유의 변수?

예.

당신은 등 세션 상태, caching처럼, 다른 지속성 매체를 사용할 것

은 각 사용자에 대해 고유 수 있도록 어떤 사람들은 ASP.NET의 필드에 [ThreadStatic] 속성을 사용하지만, 즉 위험한과 같이해서는 안됩니다. 이것을 피하십시오. 누군가 다른 사람이 추천 할 경우에 한해서 가져옵니다.

+0

다시 편집하십시오. '[ThreadStatic]'에 대해 언급해야 할 점은 ASP.NET이 다른 스레드에서 요청 **의 여러 단계를 처리 할 수 ​​있다는 것입니다. * - [ThreadStatic]과 함께 매우 이상한 행동으로 이어질 수 있습니다. –

+0

@MarcGravell 예. 왜 나는 그것의 사용을 강력하게 권장하지 않습니다. ASP.NET이 시작한 것과 동일한 스레드에서 ASP.NET이 요청을 완료한다는 보장은 없습니다. 특히 C# 5/MVC4가 진행되는 동안 새로운 비동기/대기를 이용하는 것을 방지 할 수 있습니다. – vcsjones