Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    aiuto per il funzionamento file .ashx,

    salve, ho scaricato un template, e lho importato in vs2010...
    praticamente è tutto pronto, ma ho un problema con il file .ashx, che non ho mai usato!!!!

    nella pagina dei contatti, c'è un form per l'invio di mail, al click del pulstante "send", si avvia una funzione javascript

    codice:
    submitFu: function () {
    					        _.validateFu()
    					        if (!_.form.has('.' + _.invalidCl).length)
    					            $.ajax({
    					                type: "POST",
    					                url:bin/MailHandler.ashx,
    					                data: {
    					                    name: $('.name input', _.form).val() || 'nope',
    					                    email: $('.email input', _.form).val() || 'nope',
    					                    phone: $('.phone input', _.form).val() || 'nope',
    					                    fax: $('.fax input', _.form).val() || 'nope',
    					                    state: $('.state input', _.form).val() || 'nope',
    					                    message: $('.message textarea', _.form).val() || 'nope',
    					                    owner_email: _.ownerEmail,
    					                    stripHTML: _.stripHTML
    					                },
    					                success: function () {
    					                    _.showFu()
    					                },
    					                error: function (err) {
    					                    var a = err;
    					                }
    					            })
    il file .ashx è questo:
    codice:
    <%@ WebHandler Language="C#" Class="Handler" Debug="true" %>
    
    using System;
    using System.Web;
    using System.Net.Mail;
    using System.Text.RegularExpressions;
    
    public class Handler : IHttpHandler {
        public void ProcessRequest (HttpContext context) {
    		SmtpClient mailClient = new SmtpClient(context.Request.Form.Get("smtpMailServer"));
    		string owner_email = context.Request.Form.Get("owner_email");
    		string subject = "A message from your site visitor " + context.Request.Form.Get("name");
    		string email = context.Request.Form.Get("email");
    		string messageBody = "";
    	
    		messageBody += "
    
    Visitor: " + context.Request.Form.Get("name") + "</p>\n";
    		messageBody += "
    \n";
    		messageBody += "
    
    Email Address: " + context.Request.Form.Get("email") + "</p>\n";
    		messageBody += "
    \n";
    		messageBody += "
    
    Phone Number: " + context.Request.Form.Get("phone") + "</p>\n";
    		messageBody += "
    \n";
    		messageBody += "
    
    Message: " + context.Request.Form.Get("message") + "</p>\n";
    	
    			
    		MailMessage message = new MailMessage();
    	
    		try{
    			message.From = new MailAddress(email.ToString());
    		}catch (FormatException e) {
    			context.Response.Write(e.Message);
    		}
    	
    		message.To.Add(owner_email);
    		message.Subject = subject;
    		if(context.Request.Form.Get("stripHTML") == "true"){
    			message.IsBodyHtml = false;
                messageBody = Regex.Replace(messageBody, "<.*?>", string.Empty);
    		}else{
    		  	message.IsBodyHtml = true;
    		}
    		message.Body = messageBody;
    		
    		try{
    			mailClient.Send(message);
    		}catch (SmtpException e) {
    			context.Response.Write("mail failed");
    		}
    		context.Response.Write("mail sent");
    	}
    
    	public bool IsReusable {
    		get	{
    			return false;
    		}
    	}
    }
    però la function javascript sembra non arrivare al file .ashx....
    magari si deve settare qualcosa sul web.config...
    ringrazio in anticipo chiunque mi possa aiutare!!!!!

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    toglilo via l'ashx dalla cartella bin! (e non metterlo in un altra cartella speciale)

    un consiglio, quando sei in sviluppo scrivi l'handler on_error nel global asax e in casi di errori misteriosi mettici li un breakpoint. Qualcosa in piu la scopri sempre da li.

  3. #3
    grazie mille rsdpzed,
    ora sembra tutto ok, spostando il flile in un'altra cartella....

    volevo seguire il tuo consiglio riguardo la gestione degli errori nel file global.asax, ma sembra non esserci, anche cliccando su "mostra tutti i file", come posso creare il file global.asax??

    la mia è una applicazione web.... come posso fare???

    grazie....

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    clicca con il destro sul progetto e scegli aggiungi elemento->global.asax

    se dentro non c'è gia ci metti:

    codice:
    protected void Application_Error()
    {
    }
    di li si passa tutte le volte che c'è un errore http o un eccezione non gestita. mettendo un breakpoint sulla graffa aperta, da finestra di controllo mentre sei in debug, puoi ispezionare l'oggetto HttpContext, tra cui HttpContext.Current.Server.GetLastError().

    P.S.
    ho fatto una prova per togliermi un dubbio.
    questo problema non l'avresti scoperto nemmeno cosi. la richiesta viene bloccata sul nascere dal server prima di essere processata da asp.net.
    Un ulteriore strumento di debug e che ti sarebbe stato utile è firebug e la sua scheda NET. Infatti da li avresti visto che la risposta è un http 403 (accesso negato)

    In ogni caso la parsimonia non è mai troppa: controlla gli errori a tutti i livelli compreso in globa asax e usa firebug

  5. #5
    grazie rsdpzed....

    ora sembra tutto ok!!!!!

    tra firebugs e global.asax, gli errori avranno vita breve

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.