我正在尝试调试“偶尔”问题。我们有一个需要发送电子邮件的经典 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。