2009-03-20 4 views
4

나는 DLL로 컴파일하고 ASP.NET 패키지의/bin 폴더에 넣는 Handler라는 HttpHandler를 가지고 있습니다. 그리고 나는 .ASHX 파일이 있습니다기본 네임 스페이스를 사용하는 HttpHandler

<% @ webhandler language="C#" class="Handler" %> 

을하지만 난 유형 '핸들러' 오류를 만들 수 없습니다 얻을. 나는 무상 네임 스페이스에 처리기를 포장하는 경우

그러나, foo는 말, 그리고 그것을 잘 작동

<% @ webhandler language="C#" class="foo.Handler" %> 

에 .ASHX을 변경합니다. 왜 네임 스페이스, 즉 기본 네임 스페이스를 사용할 수 없습니까? Microsoft는 msdn 웹 사이트의 많은 HttpHandlers 예제에서 네임 스페이스를 생략했습니다.

답변

3

Thi는 .Net 어셈블리의 특성 때문입니다. 참조 유형 또는 값 유형은 모두 네임 스페이스로 감싸 야합니다. 네임 스페이스는 논리적 그룹화에 사용됩니다. 귀하의 경우 'Handler'클래스는 사용자 정의 참조 유형입니다. 모든 어셈블리는 루트에 하나 이상의 루트 네임 스페이스를 가질 수 있지만 루트에서는 참조 유형이나 값 유형을 가질 수 없습니다. 사실 프로젝트 속성의 응용 프로그램 탭에 새 클래스 라이브러리 프로젝트를 만들 때 클래스 라이브러리 프로젝트의 기본 네임 스페이스 지정 옵션이 있습니다. 따라서 프로젝트에서 새 클래스를 만들 때마다 ProjectProperties.Application.DefaultNameSpace에 지정된이 기본 NameSpace 주위에이를 래핑합니다.

실전에서 보려면 .Net SDK와 함께 제공되는 IL Disassemblar와 함께 .Net 어셈블리를 열어보십시오.

관련 문제