2010-12-30 7 views
5

static 변수를 Global.asax에 선언하면 ASP.NET 페이지에서 어떻게 액세스 할 수 있습니까?Global.asax 정적 멤버에 액세스하는 방법?

<script runat=server"> 

    public static object myObject = new MyClass(); 

    // Application_Start() and other stuff goes here. 

</script> 

그리고,이 (모든 요청에 ​​대해 동일한 인스턴스) 전역 객체를 저장하는 것이 좋습니다?

+0

좋은 질문입니다. Application_Start()에서 항상 개체를 다시 초기화한다고 가정합니다. –

+0

'asp.net'이 선언을 허용하지만'static' 변수를 찾을 수 없습니다. 'Global.asax' 내부의 코딩이 어떤 클래스에 매핑되는지를 안다면, 그 변수에 접근 할 수 있습니다. – Xaqron

+0

Xaqron과 완전히 반대되는 것처럼 들리는군요. 어쩌면 "더 큰 그림"질문을 게시하면 더 만족스러운 대답을 얻을 수 있습니다. – Greg

답변

4

인 myObject가

Global.myObject 
+0

'HttpHandler' 내부에서 사용할 것이므로'HttpContext'에 접근 할 수 있습니다.하지만 거기에는 없습니다. – Xaqron

+0

당신은 할 수 있지만 핸들러를 조금 다르게 할 수 있습니다. 이 답변을 참조하십시오 http://bit.ly/eT4E71 – phillip

+1

@philip : 제발 stackenflow에 URL 단축키를 사용하지 마십시오. 전체 URL을 사용하거나'[URL 제목] (http://www.example.com/address)'을 사용하십시오. – Brian

0

개인적으로 사용 Global.asax에와 당신의 ASP.NET 페이지 내부의 모든 방법을 사용할 수 있어야, 난 강력하게 ASP.NET에서 전역 변수를 사용하여에 대해 투표 할 것입니다. 나는 몇 년 전에 오히려 나쁜 경험을했다.

MyClass 전역 인스턴스의 구성원에 대한 액세스를 동기화하여 멀티 스레딩 시나리오에서 제대로 작동하는지 확인해야합니다 (다중 요청이 들어올 경우 필수/필수).

사용할 수있는 ApplicationState도 있습니다 (according to Microsoft, you shouldn't).

+1

불변 인 경우 사용할 수 있습니다. – Omu

0

글로벌은 나를 위해 작동 정의되지 않은 :

ASP.global_asax 예를

ASP.global_asax.DefaultModel.GetTable를 ("태그");

관련 문제