2010-09-21 7 views
0

Disons que j'ai quelque chose comme ceci:prises avec le problème d'essayer mail

public ActionResult Test(SomeModel m) 
{ 

    try 
    { 
     _db.SaveModel(m); 

     SendMailToUser(m); 
     RedirectToRoute("Something"); 
    } 
    catch 
    { 
     return View(); 
    } 

} 

Et j'ai des problèmes avec beaucoup de howto ce cas d'échec « SendMailToUser ». Le modèle est enregistré dans la base de données. Comment puis-je le faire continuer si le courrier ne parvient pas à envoyer?

/M

+0

Que voulez-vous que se passe si l'envoi du courrier échoue? L'erreur devrait-elle simplement être ignorée? –

Répondre

1

Si vous voulez juste avaler l'exception (si elles sont lancées) de la fonction SendMailTouser(m) vous pouvez faire:

public ActionResult Test(SomeModel m) 
{ 
    try 
    { 
     _db.SaveModel(m); 
    } 
    catch 
    { 
     return View(); 
    } 

    try 
    { 
     SendMailToUser(m); 
    } 
    catch { } 
    finally 
    { 
     RedirectToRoute("Something"); 
    } 
} 

Si vous souhaitez ne pas enregistrer le modèle si le l'envoi d'e-mail échoue, vous devez envelopper les deux dans une unité de travail ou un bloc de transaction de sorte qu'il annulera l'enregistrement si l'e-mail échoue.

1
public ActionResult Test(SomeModel m) 
{ 

    try 
    { 
     _db.SaveModel(m); 
     try 
     { 
      SendMailToUser(m); 
     } 
     catch 
     { 
      //do something 
     } 
     RedirectToRoute("Something"); 
    } 
    catch 
    { 
     return View(); 
    } 

} 
Questions connexes