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 파일에서