webForumDet fria alternativet

En "External component has thrown an exception" till

.NET

5 svar · 594 visningar · startad av yohpops

Medlem sedan feb. 20011 198 inlägg
Frågan#1

Hej.

Varför får jag detta felet med nedan kod?
Jag har kollat så att det är värden överallt och att smptservern fungerar.

[B]External component has thrown an exception.[/B]
[B]Description[/B]: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
[B]Exception Details[/B]: System.Runtime.InteropServices.SEHException: External component has thrown an exception.
[B]Source Error[/B]: 
Line 232:				mail.Priority=System.Web.Mail.MailPriority.High;
Line 233:				SmtpMail.SmtpServer=ConfigurationSettings.AppSettings["smtpserver"].ToString();
[red]Line 234:				SmtpMail.Send(mail);[/red]

Source File: d:\blandat\inetpub\poapproveauthorder\default.aspx.cs    Line: 234 

Stack Trace: 

[SEHException (0x80004005): External component has thrown an exception.]
   System.RuntimeType.CreateInstanceImpl(Boolean publicOnly) +0
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +66
   System.Activator.CreateInstance(Type type) +7
   System.Web.Mail.LateBoundAccessHelper.CreateInstance()
   System.Web.Mail.CdoSysHelper.Send(MailMessage message)
   System.Web.Mail.SmtpMail.Send(MailMessage message)
   POApproveAuthOrder.WebForm1.sendMail() in d:\blandat\inetpub\poapproveauthorder\default.aspx.cs:234
   POApproveAuthOrder.WebForm1.Page_Load(Object sender, EventArgs e) in d:\blandat\inetpub\poapproveauthorder\default.aspx.cs:85
   System.Web.UI.Control.OnLoad(EventArgs e) +67
   System.Web.UI.Control.LoadRecursive() +35
   System.Web.UI.Page.ProcessRequestMain() +750
MailMessage mail = new MailMessage();

mail.To=ConfigurationSettings.AppSettings["mailTo"].ToString();
mail.Cc=ConfigurationSettings.AppSettings["mailCc"].ToString();

mail.Subject="AUTHORIZATION TO APPROVE PURCHASE PROPOSAL";

mail.Body = "Cost Center Manager Name: " + txtCCManagerName.Text + "\n";
mail.Body += "Email: " + txtEmail.Text + "\n";
mail.Body += "Phone: " + txtPhone.Text + "\n";
mail.Body += "Cost Center Number: " + txtCCNumber.Text + "\n";
mail.Body += "From Date: " + calFromDate.SelectedDate.ToShortDateString() + "\n";
mail.Body += "To Date: " + calToDate.SelectedDate.ToShortDateString() + "\n";

mail.From=txtEmail.Text;

mail.Bcc=mail.From;

mail.Priority=System.Web.Mail.MailPriority.High;
SmtpMail.SmtpServer=ConfigurationSettings.AppSettings["smtpserver"].ToString();
SmtpMail.Send(mail);

Måste jag ha något installerat på min maskin förutom iis?

Medlem sedan dec. 19996 721 inlägg
#2

System.Web.Mail är ingen höjdare egentligen. Kör gärna med t.ex. OpenSMTP i stället.

Medlem sedan feb. 20011 198 inlägg
#3

Webmastern är inte så pigg på att installera tredjepartsprogramvara på servern.
Vad är det som gör System.Web.Mail så dåligt?
Och vad kan felet bero på?
Går det att felsöka på något sätt?

Medlem sedan juli 20011 084 inlägg
#4

hmm... Installera? Varför skulle det vara så jobbigt att installera just denna komponent? Är det inte bara att lägga OpenSmtp.dll i bin mappen?

... och ett snabbt test visar att så är fallet? En sådan webbmaster är bara lat :P

Men det skulle iofs vara kul att veta lite mer vad som är dåligt med den inbyggda? Har det med som de skriver på OpenSmtp.Net sida?

allows developers to use SMTP servers other than MS SMT

Medlem sedan feb. 20011 198 inlägg
#5

Det har inte med jobbighet av installation att göra utan driftsäkerhet.
Jag ska kolla upp lite mer om OpenSmtp och se vad han säger..

Medlem sedan dec. 19996 721 inlägg
#6

mozilla skrev:

Men det skulle iofs vara kul att veta lite mer vad som är dåligt med den inbyggda? Har det med som de skriver på OpenSmtp.Net sida?

Den fördelen de nämner på deras sida vet jag inte hur de kommit fram till, eftersom det är rent skitsnack. Det går alldeles utmärkt att använda System.Web.Mail till att skicka med vilken SMTP-server som helst.

Nej, nackdelen med System.Web.Mail är dels att den inte är särskilt kraftfull. Vissa saker kan man inte göra (t.ex. skicka mail i text och HTML-format), andra saker är knepiga och går endast att komma åt via obskyra Fields-inställningar.

Det stora problemet är dock att System.Web.Mail i själva verket bara är en wrapper runt COM-objekten CDOSYS och CDONTS. Problemen med detta är många:

  • Man bör alltid sträva efter att köra managed code så länge som möjligt, för maximal portabilitet och applikationssäkerhet. Att blanda in COM-objekt är ett steg i fel riktning
  • System.Web.Mail väljer att wrappa CDOSYS eller CDONTS beroende på vilket operativsystem man kör på, vilket i praktiken innebär att saker och ting kan bete sig olika på olika maskiner, trots identisk kod.
  • CDOSYS eller CDONTS krävs för att det ska fungera, och dessa finns inte alltid tillgängliga, eller har fek version. Windows 98/Me/XP Home får t.ex. väldiga problem.
  • Eftersom man överlåter allt till CDO så kan man drabbas av helt okontrollerbara fel när man flyttar sina applikationer. Det mesta tyder på att yohpops problem beror på att CDO saknas eller inte fungerar som det ska. Med en komplett, managed code-lösning får man en förutsägbar funktionalitet
254 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)