최근 진행 중인 asp.net 웹 어플리케이션 프로젝트에서 한 가지 특이한 문제점을 발견하였습니다. 여러가지 새로운 형태의 웹 프로그래밍 컨셉을 시도하던 중에 발견한 문제점으로 어떻게 보면 기술상의 한계와도 관련이 있을 듯합니다.
IDE를 이용하여 개발하게 되는 경우, 근래에는 닷넷 프레임워크 2.0이 제공하는 partial 키워드를 이용하여 Code Behind를 구현하게 됩니다. 이렇게 Code Behind로 분리하여 구현을 하게 되는 경우 C# 컴파일러가 제공하는 문법적 확장 기능, 특히 문자열에 관해서는 매우 자유로운 접근이 가능합니다.
Code Behind에서는 다음의 코드는 올바른 코드입니다.
string myScript = @"<script language=""text/javascript"">window.alert('test');</script>";
하지만 위의 코드를 다음과 같이 Inline Compilation으로 변경하여 구현하면 컴파일 오류가 발생할 수 있습니다.
<script runat="server">protected void Page_Load(object sender, EventArgs e)
{string myScript = @"<script language=""text/javascript"">window.alert('test');</script>";
}</script>
위에서 강조 표시한 부분에 의하여 "상수에서 줄 바꿈 발생" 오류가 나타납니다. 아마도 이것은 ASP.NET Compilation Engine이 문자열 리터럴을 정확하게 구분해내지 못한 기술적인 한계 때문에 발생한 문제인것으로 보입니다.
위의 문제를 해결하기 위해서 제가 택한 방법은 Code Behind 대신 App_Code 폴더 안에 관련 코드를 보관하는 것이었습니다. 더 좋은 방법이 있을지는 한 번 즈음 찾아봐야 할 듯 합니다.






당신의 의견을 작성해 주세요.