54 messaggi dal 13 settembre 2010
Ciao a tutti,
sto cercando di implementare un controllo captcha all'interno della mia webform ed ho cercato di seguire quanto scritto in
http://www.guru4.net/articoli/captcha/

Non riesco a però a visualizzare nessuna immagine quando uso il controllo.
Ho seguito alla lettera quanto indicato
- caricato la libreria (dll e gli altri 2 file) all'interno della cartella bin
- ho inserito nell'httphandlers del webconfig la direttiva come indicato
- ho registrato l'assebly nella pagina dove dovrò utilizzare il controllo
- ho inserito il controllo all'interno del form

ma non vedo nessuna immagine!

Il debugger mi dice
GET http://www.miodominio.it/visualcaptcha.axd?id=ae6a1e0c41134286ad01add73665fa55 500 (Internal Server Error)

Avete idea di cosa potrebbe essere?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
gdalbell ha scritto:
- ho inserito nell'httphandlers del webconfig la direttiva come indicato


ciao, se utilizzi IIS 7 questo passo è cambiato. Non si usa più il nodo system.web/httpHandlers ma il nodo system.webServer/handlers.
Qui trovi un esempio che illustra la differenza (non è che cambi molto in realtà).
http://www.aspitalia.com/script/983/Modificare-Impostazioni-Handler-Controlli-Charting-ASP.NET.aspx

gdalbell ha scritto:

Il debugger mi dice
GET http://www.miodominio.it/visualcaptcha.axd?id=ae6a1e0c41134286ad01add73665fa55 500 (Internal Server Error)


mmh, questo è un errore generico, non dice molto. Momentaneamente, finché sei in fase di debug, dal web.config disabilita i "customErrors" aggiungendo questo al nodo system.web:
<customErrors mode="Off" />

Ora, nella barra degli indirizzi del browser, incolla l'url:
http://www.miodominio.it/visualcaptcha.axd?id=ae6a1e0c41134286ad01add73665fa55

Comunque, se ti è possibile, lavora in locale anziché su miodominio.it, così non devi disabilitare i customErrors (o al limite setti il mode="RemoteOnly"). Così i visitatori non vedrebbero i dettagli dell'eccezione.

ciao,
Modificato da BrightSoul il 25 novembre 2011 00.03 -

Enjoy learning and just keep making
54 messaggi dal 13 settembre 2010
Si si sapevo del discorso di IIS7, io utilizzo IIS6 quindi ho messo la direttiva in handlers dentro system.web (anche perchè nel caso ci fosse un errore nel web.config non riuscirei a visualizzare nessuna pagina aspx del sito).

Il customerror è già settato su off.

Il problema è che io riesco a visualizzare la pagina ma non l'immagine captcha.
Se copio incollo l'url come mi hai suggerito esce un errore che ti posto:

Exception Details: System.ArgumentException: Font 'Stencil' cannot be found.

stacktrace:
[ArgumentException: Font 'Stencil' cannot be found.]
   System.Drawing.FontFamily.CreateFontFamily(String name, FontCollection fontCollection) +1045404
   System.Drawing.FontFamily..ctor(String name) +6
   GURU4.net.Web.Controls.CaptchaLibrary.VisualCaptchaHandler..cctor() in D:\Projects\Captcha\GURU4.net.Web.Controls.CaptchaLibrary\VisualCaptcha\VisualCaptchaHandler.cs:156

[TypeInitializationException: The type initializer for 'GURU4.net.Web.Controls.CaptchaLibrary.VisualCaptchaHandler' threw an exception.]

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86
   System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
   System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1051
   System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111
   System.Web.Configuration.HttpHandlerAction.Create() +57
   System.Web.Configuration.HandlerFactoryCache..ctor(HttpHandlerAction mapping) +19
   System.Web.HttpApplication.GetFactory(HttpHandlerAction mapping) +96
   System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +125
   System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +93
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155


Come fa a mancare il carattere stencil????
11.886 messaggi dal 09 febbraio 2002
Contributi
gdalbell ha scritto:
Come fa a mancare il carattere stencil????


Eh, probabilmente non è tra i font installati... Se guardi il codice sorgente del progetto (si scarica qui), nel file VisualCaptchaHandler hanno definito una serie di font:
private static FontFamily[] _families = 
{ 
 new FontFamily("Times New Roman"),
 new FontFamily("Georgia"),
 new FontFamily("Verdana"),
 new FontFamily("Arial"),
 new FontFamily("Stencil"),
 new FontFamily("Trebuchet MS"),
 new FontFamily("Tahoma"),
 new FontFamily("Comic Sans MS")
};


Verifica che ognuno di essi sia installato sul tuo server, li trovi in C:\windows\fonts, altrimenti otterrai un errore come nel caso di Stencil.

Puoi risolvere in due modi: o scarichi il font da internet e lo installi nella macchina, oppure eliminalo dall'array _families, in modo che non venga utilizzato dal controllo captcha.

ciao
Modificato da BrightSoul il 25 novembre 2011 19.31 -

Enjoy learning and just keep making
54 messaggi dal 13 settembre 2010
Essendo il sito in questione su hosting aruba non so come installare il font.
E poi non so come togliere il font dall'array in quanto gli unici file che ho inserito nella cartella bin sono in formato xml,pdb e dll.
Come si modifica l'array?

Ho quindi provato su un altro sito il cui spazio è all'interno di un server di cui ho pieno controllo.

Il server in questione ha IIS 7 quindi ho incluso la direttiva
<system.webServer>
<handlers>
<add name="VisualCaptcha" verb="GET" path="visualcaptcha.axd" type="GURU4.net.Web.Controls.CaptchaLibrary.VisualCaptchaHandler" />
</handlers>
</system.webServer>

nel web.config, ho registrato l'assembly
<%@ Register Assembly="GURU4.net.Web.Controls.CaptchaLibrary" Namespace="GURU4.net.Web.Controls.CaptchaLibrary" TagPrefix="ccl" %>

nella pagina in questione e ho inserito il controllo
<form runat="server">
<ccl:VisualCaptcha ID="visualCaptchaControl" runat="server" Width="150" Height="50" />
<ccl:VisualCaptchaValidator ID="visualCaptchaValidator" AssociatedVisualCaptchaControlId="visualCaptchaControl" ControlToValidate="txtCaptcha"
ErrorMessage="Inserire correttamente il codice visualizzato nell'immagine" runat="server" />
<asp:TextBox ID="txtCaptcha" runat="server" /> 
</form>



Ora visualizzo un'immagine rettangolare con colori sfumati ma all'interno non si vede nessuna lettera.
Il debugger non mi da nessun errore.

Ma perchè????
11.886 messaggi dal 09 febbraio 2002
Contributi
gdalbell ha scritto:
Ora visualizzo un'immagine rettangolare con colori sfumati ma all'interno non si vede nessuna lettera.
Il debugger non mi da nessun errore.
Ma perchè????


Prova ad impostare ChallangeTextLength="5" sul controllo VisualCaptcha, dovrebbe servire a mostrare 5 caratteri.

gdalbell ha scritto:

Come si modifica l'array?


Scarica il sorgente, lo trovi qui, scompattalo e poi apri con Visual Studio il file .csproj che trovi all'interno. Ora vai ad editare il file VisualCatpcha/VisualCaptchaHandler.cs in cui si trova l'array e infine ricompila il progetto. Nella cartella /bin troverai la nuova dll e gli altri file da sostituire a quei tre che hai adesso.

ciao

Enjoy learning and just keep making
54 messaggi dal 13 settembre 2010
Ho inserito
ChallangeTextLength="5"
all'interno del controllo ma niente, non visualizzo nessuna lettera.

Non capisco perchè...
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao, non so, io ho scaricato il progetto completo, pubblicato nel loro sito, e riesco a vedere correttamente il testo sullo sfondo colorato.

Ho potuto riprodurre il tuo problema solo svuotando l'array _families. Forse è questo il problema? Elimina soltanto Stencil, così che l'array sia valorizzato come segue:

private static FontFamily[] _families = 
{ 
    new FontFamily("Times New Roman"),
    new FontFamily("Georgia"),
    new FontFamily("Verdana"),
    new FontFamily("Arial"),
    new FontFamily("Trebuchet MS"),
    new FontFamily("Tahoma"),
    new FontFamily("Comic Sans MS")
};


ciao,

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.