2010-03-29 3 views
0

Tout d'abord, je suis un développeur php et la plupart des .net me sont étrangers, c'est pourquoi je poste ici!Nouveau sur asp.net. Besoin d'aide pour déboguer ce formulaire email

Je viens de migrer sur un site d'un ensemble d'hébergement à un autre. L'ensemble du site est écrit en .net. Aucun site n'est géré par une base de données, la plupart fonctionnent donc, sauf pour le formulaire de contact. La sortie sur le site indique simplement qu'il y a eu une erreur "Il y a eu une erreur - veuillez essayer de soumettre à nouveau le formulaire de contact, si vous continuez à rencontrer des problèmes, veuillez en informer notre webmaster." Ceci est juste un message simple qu'il ressort de la partie "catch" de la fonction email.

Je suis entré dans web.config et changé les paramètres:

<emailaddresses> 
     <add name="System" value="[email protected]"/> 
     <add name="Contact" value="[email protected]"/> 
     <add name="Info" value="[email protected]"/> 
    </emailaddresses> 
    <general> 
     <add name="WebSiteDomain" value="hoyespharmacy.com"/> 
    </general> 

ensuite le fichier .cs pour un contact contient la fonction mail EmailFormData():

private void EmailFormData() 
{ 
    try 
    { 
     StringBuilder body = new StringBuilder(); 
     body.Append("Name" + ": " + txtName.Text + "\n\r"); 
     body.Append("Phone" + ": " + txtPhone.Text + "\n\r"); 
     body.Append("Email" + ": " + txtEmail.Text + "\n\r"); 
     body.Append("Fax" + ": " + txtEmail.Text + "\n\r"); 
     body.Append("Subject" + ": " + ddlSubject.SelectedValue + "\n\r"); 
     body.Append("Message" + ": " + txtMessage.Text); 

     MailMessage mail = new MailMessage(); 
     mail.IsBodyHtml = false; 
     mail.To.Add(new MailAddress(Settings.GetEmailAddress("System"))); 
     mail.Subject = "Contact Us Form Submission"; 
     mail.From = new MailAddress(Settings.GetEmailAddress("System"), Settings.WebSiteDomain); 
     mail.Body = body.ToString(); 

     SmtpClient smtpcl = new SmtpClient(); 

     smtpcl.Send(mail); 
    } 
    catch 
    { 
     Utilities.RedirectPermanently(Request.Url.AbsolutePath + "?messageSent=false"); 
    } 
} 

Comment puis-je voir ce que les erreur réelle est. Je pense que je peux faire quelque chose avec la partie "catch" de la fonction .. Des pointeurs?

Merci!

+0

Une note de côté à votre problème, vous ne devez pas rediriger à partir d'un bloc catch pour éviter ThreadAbortExceptions –

Répondre

0

Commentaire sur Utilities.RedirectPermanently(Request.Url.AbsolutePath + "?messageSent=false"); et le remplacer par throw;

3

Modifier le catch à

catch(Exception ex) 
{ 
    throw; 
} 

La variable ex tiendra vos informations d'exception, de sorte que vous pouvez mettre un point de jonction. Ce serait plus facile de passer à travers, mais vous pouvez simplement lancer l'erreur.

0

Quel environnement de développement utilisez-vous?

Il est probablement préférable d'utiliser Visual Studio (Express si vous n'avez pas la version complète) et de déboguer ce code, en appuyant sur F11 pour parcourir chaque instruction jusqu'à ce qu'elle se brise. Ensuite, vous devriez avoir accès à plus d'informations.

+0

netbeans en utilisant ftp comme source distante. Je n'ai pas d'études de .net de fantaisie pour .net puisque je ne travaille jamais dedans, aidant juste à déplacer ce site. – Roeland

0

Je suggère de vous connecter à long terme (tel que log4net). Mais pour l'amour de la vitesse essayez de changer votre instruction catch pour ressembler à:

catch(Exception e) 

puis utilisez le débogueur VS pour explorer l'exception réelle.

0

Placez un point d'arrêt sur la première ligne de la méthode EmailFormData et exécutez l'application en mode débogage. Vous pouvez ensuite parcourir le code ligne par ligne.

Questions connexes