2010-08-26 8 views
0

Je suis suivre ce tutoriel pour utiliser CAPTCHA dans l'application MVC: http://coderjournal.com/2008/03/actionfilterattribute-aspnet-mvc-captcha/ASP.NET MVC personnalisée HttpHandler

Je pense que cela a été fait pour ealry versions d'ASP.NET MVC, car il doenst travail pour moi.

Le problème est que l'image captcha ne s'affiche jamais, car le gestionnaire personnalisé (captcha.ashx) n'obtient jamais la requête.

En web.config:

<httpHandlers> 
      <remove verb="*" path="*.asmx"/> 
      <add verb="GET" validate="false" path="captcha.ashx" type="SCE.Models.Helpers.Captcha.CaptchaHandler"/> 
     </httpHandlers> 

Le gestionnaire:

namespace SCE.Models.Helpers.Captcha 
{ 
    public class CaptchaHandler : IHttpHandler 
    { 
     public bool IsReusable 
     { 
      get { return true; } 
     } 
     public void ProcessRequest(HttpContext context) 
     { 
      string guid = context.Request.QueryString["guid"]; 
      CaptchaImage ci = CaptchaImage.GetCachedCaptcha(guid); 

      if (String.IsNullOrEmpty(guid) || ci == null) 
      { 
       context.Response.StatusCode = 404; 
       context.Response.StatusDescription = "Not found"; 
       context.ApplicationInstance.CompleteRequest(); 
       return; 
      } 

      using (Bitmap b = ci.RenderImage()) 
      { 
       b.Save(context.Response.OutputStream, ImageFormat.Gif); 
      } 
      context.Response.ContentType = "image/png"; 
      context.Response.StatusCode = 200; 
      context.Response.StatusDescription = "OK"; 
      context.ApplicationInstance.CompleteRequest(); 
     } 
    } 
} 

Il semble version plus récente de MVC a changé la façon dont ils gestionnaire d'itinéraire, mais je ne sais pas quoi exactement ...

Des idéias pour appeler le gestionnaire?

MISE À JOUR: Voici la solution trouvée ive: Dans le fichier Global.asax:

routes.IgnoreRoute("{filename}.ashx/{*pathInfo}"); 
+0

Le code est un lien vers écrit pour ASP.NET MVC Preview 1 ou 2. Vous n'avez même pas besoin d'un gestionnaire HTTP personnalisé pour cela. Cherchez-vous simplement à utiliser un CAPTCHA dans votre site ASP.NET MVC? – bzlm

+0

duplication possible de [Comment utiliser Captcha dans asp.net mvc] (http://stackoverflow.com/questions/2286688/how-to-use-captcha-in-asp-net-mvc) – bzlm

+0

oui captcha en mvc. ..mais pas recaptcha – ozsenegal

Répondre

1

En utilisant MVC 2 et ReCaptcha ce fut une solution assez élégante. À mon humble avis

http://devlicio.us/blogs/derik_whittaker/archive/2008/12/02/using-recaptcha-with-asp-net-mvc.aspx

+0

désolé je ne peux pas utiliser recaptcha, parce que je tente déjà, et il fonctionne pour moi – ozsenegal

+0

Vous pouvez porter cette même méthode d'implémentation à n'importe quel captcha que vous utilisez. Personnellement, j'aime vraiment pouvoir décorer mon action avec l'attribut captcha. –

Questions connexes