簡體   English   中英

ASP,Server.CreateObject,MTS和C#對象池-重用問題?

[英]ASP, Server.CreateObject, MTS and C# object pooling — a reuse problem?

我正在嘗試調試“偶然的”問題。 我們有一個經典的ASP應用程序,需要發送電子郵件。 無論出於何種原因,它都使用通過COM公開的C#對象來執行此發送; c#對象是圍繞MailMessage和SMTPClient的簡單包裝,使用SendAsync進行發送。 在ASP方面,在發送每封郵件之前,對象都是Server.CreateObject(),但是郵件消息卻是緊密循環發送的。 導致對每個消息中的新的COM對象(因此一個新的C#對象)。 但是,我們看到消息已丟棄,消息已發送給多個收件人,就像對象被重用一樣。

在對MTS進行了一些研究之后(再也沒有想到我會再去那里!),我記得/發現Server.CreateObject通過MTS,MTS會匯集COM對象以“幫助”我。 我們已經更改了ASP代碼以改為執行新的ActiveXObject,我認為這沒有通過MTS,但是我們有同樣的問題。

我是否假設.net中的ServicedComponent接口是ObjectControl接口的.net / com +版本是否正確? 如果我從ServicedComponent繼承,則將對象設置為允許pooling = false? 我寧願在ASP中進行更改,但是如果這不可能,那么我也可以進行c#更改。

思考?

編輯:頁面語言也是JScript,而不是“普通” VBScript。

在這種情況下,Server.CreateObject和新的ActiveXObject都將處於同一狀態。

COM +不會合並未明確指示可以合並的對象。

我傾向於做的是調查這里使用.NET組件的原因,為什么不使用CDO.Message? 使用SendAsync尤其令人困惑。 如果您有一個狹窄的循環,只是發送電子郵件,那么SendAsync對您幾乎沒有幫助。

我不能認為在這種情況下避免使用CDO.Message的充分理由,但是當然這可能是因為我們缺少其他因素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM