2012-07-06 1 views
2

나는 나는 다음과 같은 코드를 작성할 수 있도록로 ManagedFusion.Web.Captcha.CaptchaImageHandler를 추가하기 위해 노력하고있어 MVC 응용 프로그램이 있습니다가 호출되지 점점 결코 HttpHandler를

<label for="captcha">Enter @Html.Raw(Business.Captcha.CaptchaImage(Html, 50, 180)) Below</label> 

을하고 이미지를 표시합니다. 그 클래스의 코드는 절단 및 온라인 예제에서 붙여 넣기한다 : 나는

<system.web> 

<httpHandlers> 
    <add verb="GET" path="test.sample" type="ManagedFusion.Web.Handlers.CaptchaImageHandler, ManagedFusion.Web.Captcha" validate="false" /> 
</httpHandlers> 
</system.web> 

<system.webServer> 
<validation validateIntegratedModeConfiguration="false" /> 
<modules runAllManagedModulesForAllRequests="true" > 

</modules> 
<handlers> 
    <add name="CaptchaImageHandler" verb="GET" path="captcha.ashx" type="ManagedFusion.Web.Handlers.CaptchaImageHandler, ManagedFusion.Web.Captcha" /> 
</handlers> 

모든 이전 SO 질문을 가리 내 Web.config의에 다음을 추가 한

public static string CaptchaImage(this HtmlHelper helper, int height, int width) { 
      ManagedFusion.Web.Controls.CaptchaImage image = new ManagedFusion.Web.Controls.CaptchaImage { 
       Height = height, 
       Width = width, 
      }; 
      HttpRuntime.Cache.Add(image.UniqueId, image, 
       null, 
       DateTime.Now.AddSeconds(ManagedFusion.Web.Controls.CaptchaImage.CacheTimeOut), 
       Cache.NoSlidingExpiration, 
       CacheItemPriority.NotRemovable, 
       null); 
      StringBuilder stringBuilder = new StringBuilder(256); 
      stringBuilder.Append("<input type=\"hidden\" name=\"captcha-guid\" value=\""); 
      stringBuilder.Append(image.UniqueId); 
      stringBuilder.Append("\" />"); 
      stringBuilder.AppendLine(); 
      stringBuilder.Append("<img src=\""); 
      stringBuilder.Append("/captcha.ashx?guid=" + image.UniqueId); 
      stringBuilder.Append("\" alt=\"CAPTCHA\" width=\""); 
      stringBuilder.Append(width); 
      stringBuilder.Append("\" height=\""); 
      stringBuilder.Append(height); 
      stringBuilder.Append("\" />"); 
      return stringBuilder.ToString(); 
     } 

system.web-> httpHandlers가 Cassini와 System.webServer-> Handler가 IIS 7에 의해 선택되도록 선택되었습니다. 그러나 위의 코드가있는보기로 이동할 때마다 항상/captcha에 대해 404가 표시됩니다. ashx. global.asax에는 경로 무시 ​​규칙이 없습니다. 여기서 무슨 일이 일어나고있는거야? 내 로컬 컴퓨터 나 배포 된 IIS 7 인스턴스에서 처리기를 시작하지 않아도됩니다.

public static void RegisterRoutes(RouteCollection routes) { 
     routes.Ignore("captcha.ashx"); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
    } 
: Global.asax 파일에서

답변

3

, 나는 모든 방법은 다음과 같습니다 그래서이 기본 경로 매핑하기 전에 경로를 무시 추가 필요