2011-12-20 109 views
0

我最近遇到了一个奇怪的问题。我有一些VB6 .dll,我必须在我的ASP.NET Web服务项目中使用。当我在控制台应用程序中测试.dll时 - 一切正常 - 我创建一个对象,并可以使用所有方法。但是当我开始在我的Web服务中使用它时,我遇到了一个奇怪的问题。当我创建一个dll类的实例时,它会在调试器中创建(长时间停顿后),但是所有属性而不是空值(正如我在控制台应用程序中测试它时发生的那样)被设置为“功能评估被禁用,因为之前的功能评估超时,必须继续执行以重新启用功能评估“。奇怪的事情,我从来没有见过:)而在我的客户端应用程序(实际上调用该服务)的同时,我得到一个连接重置。ASP.NET Web服务项目中的VB6 .dll

有什么建议吗?

回答

1

如果此DLL是为桌面环境创建的,那么它可能无法在服务器环境中工作。它可能依赖于使用Windows消息循环进行同步,并且可能根本不是线程安全的(并且它必须是线程安全的才能在ASMX之类的多线程服务器环境中使用它)。

+0

是的,就是这个问题。你知道是否有某种方法可以在.net级别修复它,或者它必须在vb6项目的属性中进行更改? – Boltosaurus 2011-12-21 06:07:32

+1

这不只是属性。该组件必须设计用于多线程,并且必须在多线程服务器环境中进行彻底测试。一个示例是Microsoft Office的Office自动化组件。它们被设计用于从Office加载项和在桌面上运行_的其他代码。当从Web服务或ASP.NET网站使用它们时,它们要么不工作,要么以奇怪的方式失败。 – 2011-12-21 17:07:44