从ASP.NET的COM互操作
问题描述:
我想使用COM互操作从我的.NET库使用Internet Explorer 9的JavaScript引擎。在测试代码中工作正常,但在ASP.NET中运行时(在IIS上)失败。从ASP.NET的COM互操作
我的库正在使用IE的JavaScript引擎来加载CoffeeScript编译器。所以理想情况下,我想加载一次编译器,然后重新使用单个IE脚本引擎实例。我有一个锁定脚本引擎的调用,但我认为我仍然遇到与COM有关的线程问题。
是否有可能从不同的.NET线程调用COM对象? (即针对不同的IIS Web请求的线程)。
我是一个总的COM新手,所以任何建议,链接等将是伟大的。
答
我记得IIS不允许你使用线程进行操作,即创建或管理它们。它在Web应用程序中不安全。您可以做的是将您的编译器存储在服务器变量中:应用程序或会话
答
您可能想要从ASP.NET应用程序使用的许多COM对象都是为桌面环境而非服务器环境设计的。例如,他们可能不希望从不同的线程中调用,或者可能依赖UI消息泵进行同步。
我想知道,如果你只需要CoffeeScript编译器,你可以在另一个进程中托管它吗? – 2012-02-12 05:37:44