繁体   English   中英

当从具有多用户的IIS下运行的ActiveX DLL调用时,C ++ DLL崩溃

[英]C++ DLL crashes when called from ActiveX DLL running under IIS with Multpile Users

我有一个项目,其中用VB6编写的ActiveX DLL调用了C ++ DLL。 ActiveX DLL是通过IIS 7通过ASP“ CreateObject”调用加载的。

当只有一个Web用户访问该站点时(通过数千次迭代测试),一切都将完美运行。 一旦有2个或更多并发用户访问该站点,就会有1个或更多用户会话崩溃(通常会出现500错误)?

我怀疑这可能是由于C ++ DLL的线程安全性不正确,所以我使用全局互斥量重写了它以限制访问。 这没有效果。

老实说,由于VB6 ActiveX DLL的每个实例都在单线程单元中运行,所以我希望这不会成为问题吗?

任何人都可以阐明这里可能发生的事情吗? 我怀疑我不太真正理解IIS加载VB6 ActiveX DLL的多个实例时发生的情况。

ActiveX DLL可以是单线程模型或单线程单元模型: 单螺纹

公寓螺纹

您是否编写了ActiveX DLL? 您可以确定其线程模型吗?

另外,您可能希望启用调试功能,以查看是否可以在Visual Studio中捕获错误: http : //www.falconwebtech.com/post/2010/12/28/Debugging-Classic-ASP-in-IIS7-and -VS2010.aspx

启用调试后,ASP仅限于以单线程方式一次处理一个请求。 因此,如果调试时未发生错误,则ActiveX DLL最有可能是单线程的,而不是单元线程的。

另外,您知道有关AspExecuteInMTA的设置吗? 您可能要检查它是否不是无意设置为true。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM