VSTO插件中的WebServiceHost

时间:2012-02-23 09:36:59

标签: multithreading vsto webbrowser-control flash webservicehost

我正在开发一个应用程序级别的VSTO插件,其中包含基于WCF Webbrowser的具有嵌入式WebServiceHost控件和简单REST样式服务的UI。该服务将内容(尤其是Flash电影)传送到嵌入式浏览器。直到昨天,这曾经像魅力一样工作。由于一些仍然未知的原因(可能是某些.NET更新改变了一些内部处理),当浏览器从嵌入式服务器加载Flash影片时,完整的Word应用程序现在会冻结。当我将网络服务器代码移动到一个单独的进程时,它仍然有效,当flash电影已经在浏览器缓存中时它也可以工作,所以我很确定它是在插件中提供和显示flash电影的组合导致问题的原因。

我做了一些研究(我之前应该做的,也许是)并且了解到多线程和VSTO插件不能很好地结合在一起。运行Web服务肯定意味着某种多线程。

所以我的问题是:有没有机会让这种架构可靠地运行?如果是这样的话:我错过了什么?或者我应该更好地尝试另一种方法?如果是这样的话:你会推荐什么?

注意: 使用“file://”网址并因此直接从磁盘加载内容不是一个选项,因为我不能保证一个共同的docroot并且需要在它们之间放置一些逻辑用户界面和内容服务。

1 个答案:

答案 0 :(得分:1)

VSTO加载项为STA,因此您应该考虑研究WCF和STA( see related SO post )。

您始终可以host the WCF service as a windows service来避免VSTO加载项主机的STA问题。