繁体   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