.Net中COM组件兼容性的问题

最近在.NET中使用iOffice OWC组件时,不小心碰到了Com组件兼容性的问题,以前没有注意到相关问题,昨天查了些资料暂时将这个问题解决了。

方法一:在使用组建的页面添加<%@ Page aspcompat=true %>

        由 Visual Basic 6.0 等早期生成的 COM 组件调用了单线程运行单元(STA)。为了避免 ASP.NET 产生兼容性错误,我们可以在 <%@ page > 标记里设置 aspcompat 属性,以指示 ASP.NET 在 ASP 兼容模式下执行它。如果不以这种方式执行会出现安全错误。

        如果将此标记的值设为 true,还可以调用COM+1.0组建,但是这种方式性能会稍微有些下降。

方法二:NET 框架 SDK 在文件 Tlbimp.exe 中附带了一个名为类型库导入程序 (TlbImp) 的实用工具,该工具通过围绕组件生成托管包装将 DLL 文件中的标准 COM 组件转换为等效的 .NET 框架程序集。转换后的组件可以早期绑定到托管代码以获得显著提高的性能。

          这个方法应该是可以的,但是还没有去实验。

需要注意的是使用 Interop Assembly 时,虽然 ASP.NET 本身无法判断 COM 组件是否调用 STA,但是通过 aspcompat 属性可以避免由于 STA 引起的效率过低或者死锁。

         
posted on 2004-04-28 09:51  九斤老太  阅读(1980)  评论(5编辑  收藏  举报