Visual Studio .NET 2003 ASP.NET 프로젝트를 Visual Studio 2005 ASP.NET 프로젝트로 업그레이드(마이그레이션)한 다음에 예기치 않은 동작으로 원하는 결과를 얻을 수 없는 경우가 꽤 있다.
그 중에 한가지, 가장 기본적이면서도 가장 놓치기 쉬운 체크 포인트.
AutoEventWireup
요놈이다. 요놈은 <%@ Page %> 블럭 혹은 web.config의 <Pages> 태그로 설정할 수 있는데, 기본값은 true이다.
C# 2.0의 특징 중 하나가 모든 클래스를 Partial Class로 바꾼 건데, ASP.NET 2.0에서도 그 효과를 톡톡히 보기 위해 기본적으로 이 AutoEventWireup 속성을 true로 유지하여 이벤트를 명시적으로 정의해주지 않아도 몇 가지 Page와 관련된 이벤트는 자동으로 발생하도록 구성했다.
즉, 기존의 Visual Studio .NET 2003 ASP.NET 페이지에서는 페이지를 생성할 때 자동으로 이 AutoEventWireup 속성을 false로 설정하도록 페이지 단위에서 처리했었는데, 그것이 빠진 것이다. 그래서 그대로 업그레이드(마이그레이션)한 코드에서는 항상 기본값인 true가 적용되게 되므로 Page와 관련된 이벤트가 두 번 씩 발생하게 되고, 그것이 예기치 않은 결과로 이어지는 것이다.
코드에 있는 InitializeComponent() 함수 내의 Page_Load 등의 기본 Page 이벤트 정의를 삭제하든가, 아니면 이 AutoEventWireup 속성을 false로 명시적으로 써주면 해결된다.
'Tech: > .NET·C#' 카테고리의 다른 글
CAPICOM IL 수정하여 다시 빌드하기 (0) | 2008.06.26 |
---|---|
[펌] C#으로 MHT파일 만들기 (0) | 2008.06.26 |
ASP.NET에서 RSACryptoServiceProvider 사용하기 (0) | 2008.06.26 |
[펌] ViewState Compression (0) | 2008.06.26 |
[펌] HTTP Compression A Quick and Dirty Solution (0) | 2008.06.26 |