2009-04-26 5 views
0

특정 날짜 이후에 일부 "숨겨진"자산 (실제로는 App_Data 디렉토리에 숨겨져 있음)을 제공하는 새 프로젝트에 대한 요구 사항이 있습니다. 그 전에 그들은 존재하지 않는 것처럼 행동해야합니다.asp.net 처리기 및 확장 - 내가 잘못하고 있습니까?

나는 이런 종류의 작업을 Page 개체로 백 번했지만이 작업을 시작하면서 핸들러를 살펴 보았습니다. 그들과 함께 일한 적이 없으며 (그들에게 조금 겁을 먹고있는), 전체 Page 클래스의 오버 헤드없이 XML과 JPG 파일을 제공하게되어 기뻤습니다. 이미 그것을 생각해 봤으면 좋겠다. 필자는 "MyHandler.ashx? secretfile = blah.xml"과 같은 기능을 처리하기 위해이 파일을 작성했습니다.

그런 다음 "blah.xml.secret"에 대한 요청이 처리기에서 선택되고 날짜를 확인한 후 blah.xml을 반환하도록 특수 확장 처리를 시작했습니다. 두 개의 표시등이 내 머리 속에서 사라졌습니다. 코드를 수정하여 그 사건을 처리했습니다. 그것은 (IDE에서) 일했습니다! 나는 꽤 흥분했다.

dev 서버 (IIS)로 가져 오는 과정은 조금 다릅니다. .secret을 .NET 유형 (큰 문제 없음)으로 등록해야했지만 "파일이 있는지 확인하지 않은 것이 선택 취소 될 때까지 작동하지 않았습니다. "확인란을 선택하십시오. (blah.xml.secret은 분명 존재하지 않습니다 : blah.xml은 요청했지만, 보안 App_Data 디렉토리에서만 필요합니다.) 그건 큰 문제는 아니지만, 현명한 솔루션은 두 가지 구현 방식에 의존합니다 IIS 측의 세부 정보

내 질문은 : 이것은 asp.net에서 처리기의 의도 된 사용입니까? 나는이 사실을 인정하지 않고 왜곡하고 있는가? 과거에 사이트에서 이런 트릭을 본 것처럼 느껴졌지만, 내가하려는 것은 IIS 변경이 지나치게 복잡해 보입니다. 이것에 대한 나의 연구에서, 나는 슬램 덩크를 찾지 못했다. 1-2-3 가이드는 이와 같은 예를 포함하는 핸들러를 사용했기 때문에, 나는 그것을 어쩌면 학대하거나 잘못된 방향으로 가고 있다고 생각하고있다.

답변

2

네, 그게 어떻게 작동하는지 예. (Windows Server 2008에서는 IIS에서 아무것도 변경할 필요가 없도록 web.config에서 설정을 할 수있는 기회가 있습니다.)

아직 등록되지 않은 확장 프로그램을 사용하는 경우 ASP.NET 엔진이 처리 할 수 ​​있도록 등록해야합니다. .aspx와 같이 이미 ASP.NET에서 처리하는 확장 프로그램을 사용하는 경우 IIS에 아무것도 등록 할 필요가 없습니다. (Visual Studio의 통합 웹 서버에서 실행하면 모든 것이 이미 ASP.NET에 의해 처리됩니다. 그 이유는 그것이 작동하기 때문입니다.)

관련 문제