2011-08-17 6 views
2

나는이 간단한 솔루션이 있기를 바라고 있습니다. MVC 3을 사용하고 있습니다. 내 솔루션에는 두 개의 프로젝트가 있고 MyApp.Domain이라는 클래스 라이브러리와 MyApp.WebUI라는 MVC 3 웹 응용 프로그램이 있습니다. MyApp.Domain에서내 첫 HttpHandler 만들기 - 작동하지 않습니다

, 나는이 파일이 있습니다 MyApp.WebUI에서

namespace MyApp.Domain.Test 
{ 
    public class MyHandler : IHttpHandler 
    { 
     public bool IsReusable 
     { 
      get { return false; } 
     } 

     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.Write("test"); 
     } 
    } 
} 

, 프로젝트의 루트에서의 Web.config의를, 나는이 있습니다

<configuration> 
    <system.web> 
    <httpHandlers> 
     <add verb="*" path="*.testhandler" type="MyApp.Domain.Test.MyHandler"/> 
    </httpHandlers> 
    </system.web> 
</configuration> 

그러나 http://localhost:52233/test.testhandler으로 이동하면 404 오류가 발생합니다. 일종의 네임 스페이스 문제가 있다고 생각하지만 해결 방법을 모르겠습니다.

누구나이 문제를 발견 할 수 있습니까?

답변

3

라우팅에서 URL 패턴을 무시하십시오. global.asax의 기본 경로 앞에 this를 추가하십시오.

routes.IgnoreRoute("{resource}.testhandler/{*pathInfo}"); 
+0

Nice catch, thanks. – Steven

+0

도와주세요! 감사! –

0

저는 IIS가 응용 프로그램에 요청을 라우팅하지 않는다고 생각합니다. 특정 정의 된 파일 확장명 (예 : .aspx 또는 .ashx) 만 IIS에 등록되어 ASP.NET 응용 프로그램으로 라우팅됩니다. 당신이

http://localhost:52233/testhandler.ashx

<add verb="*" path="testhandler.ashx" type="MyApp.Domain.Test.MyHandler,MyAssembly"/> 

및 귀하의 요청에 Web.config의 라인을 변경하는 경우 당신은 더 많은 성공이있을 수 있습니다. 'type'값에 어셈블리 이름을 추가했음을 유의하십시오.

관련 문제