Jus*_*mer 18 .net asp.net smtp system.net.mail smtpclient
这看起来非常简单.我需要从一些ASP.NET应用程序发送电子邮件.我需要始终如一地做到这一点,没有奇怪的错误,并且没有CPU利用率.我不是在谈论大量的电子邮件,只是偶尔的电子邮件.
System.Net.Mail 似乎被严重破坏.SmtpClient不会发出Quit命令(可能是因为Microsoft(R)对以下规范不感兴趣),因此连接保持打开状态.因此,如果有人在该连接最终关闭之前尝试通过电子邮件发送,则可能会从SMTP服务器收到有关打开过多连接的错误.这是Microsoft(R)完全不感兴趣修复的错误.看这里:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=146711
此外,如果你环顾一些建议使用此代码来解决此问题:
smtpClient.ServicePoint.MaxIdleTime = 1;
smtpClient.ServicePoint.ConnectionLimit = 1;
Run Code Online (Sandbox Code Playgroud)
好的,是的,这确实"解决"了连接被打开的问题.但是,如果您愿意,可以在服务器上进行尝试,这会使运行进程(在本例中为w3wp.exe)的CPU跳转并保持100%,直到您的应用程序池被回收.无论出于何种原因,运行mscorwks.dll!CreateApplicationContext的线程都是罪魁祸首.
这具有非常好的副作用,如果您在持续100%CPU使用率的Web主机上运行,您将禁用应用程序池.所以这并不像有些人所说的那样微不足道.
所以我的问题是该怎么办?我需要做的就是这么简单; 但是,那些"太多连接打开"错误是不可接受的,也不是100%的CPU使用率.我不想购买第三方组件,不是因为我便宜,而是因为我购买了足够的组件和MSDN订阅,因为简单的SMTP功能需要花费100到300美元.
我读到将MaxIdleTime设置得更高可能会有所帮助,但我对此持怀疑态度.我不想仅仅因为Microsoft不想遵循SMTP规范而冒着我的应用程序池被禁用的风险.
编辑: 我查看了quiksoft.com组件,但它不支持SMTP身份验证,它的成本为500美元.必须有一个解决这个问题的方法.
小智 22
我遇到了与所述设置相同的CPU利用率问题.我最终向微软开了一张票,以确定问题的原因.CPU利用率问题在于ServicePoint类.在ServicePoint类的内部,有一个每隔(MaxIdleTime/2)毫秒运行的计时器.看到问题?通过将MaxIdleTime值更改为2,CPU利用率将下降到正常水平.
| 归档时间: |
|
| 查看次数: |
12686 次 |
| 最近记录: |