這似乎很簡單。我需要從一些ASP.NET應用程序發送電子郵件。我需要始終如一地執行此操作,而不會出現奇怪的錯誤,並且CPU利用率無法通過屋頂。我不是在談論羣發電子郵件,只是偶爾發送電子郵件。.NET發送電子郵件的最佳方法(System.Net.Mail有問題)
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;
好吧,沒錯,它「解決」被留下的連接問題打開。但是,如果您喜歡,請一直在服務器上嘗試它,導致進程(在本例中爲w3wp.exe)運行的CPU跳轉並保持100%,直到應用程序池被回收爲止。無論出於何種原因,運行mscorwks.dll!CreateApplicationContext的線程都是罪魁禍首。
這具有非常好的副作用,如果您在持續100%CPU使用率的Web主機上運行,您將禁用應用程序池。所以這並不像有些人所建議的那樣微不足道。
所以我的問題是做什麼?我需要做的是如此簡單;然而,讓這些「連接打開太多」的錯誤是不可接受的,也不是100%的CPU使用率。我不想購買第三方組件,並不是因爲我便宜,但是我購買了足夠的組件和MSDN訂閱,看起來很瘋狂,爲了簡單的SMTP功能需要花費100- 300美元。
我讀到設置MaxIdleTime更高可以幫助,但我對此持懷疑態度。我不想冒我的應用程序池被禁用,因爲微軟不想遵循SMTP規範。
編輯:我看着quiksoft.com組件,但它不支持SMTP認證,它的成本爲500美元。必須有解決這個問題的辦法。
根據您提供的鏈接,它顯示錯誤已被修復。有沒有可能你錯過了一個服務包? – overslacked 2009-05-30 19:45:56
我看到它說「已解決」的地方。但是我沒有看到其他的音符。我已經將服務器更新到最新的SP以及所有這些。當我看到之前通常看起來MS只是意味着他們不會修復它。他們也有我在那裏列出的「解決方法」。這可能會更清楚。 – JustAProgrammer 2009-05-30 21:31:22