1

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

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

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

注意: 使用“file://”url 直接从磁盘加载内容不是一种选择,因为我不能保证一个通用的 docroot 并且需要在 UI 和内容服务之间放置一些逻辑。

4

1 回答 1

1

VSTO 加载项是STA,因此您应该考虑研究 WCF 和 STA(请参阅相关的 SO 帖子)。

您始终可以将 WCF 服务托管为 Windows 服务,以避免 VSTO 加载项主机的 STA 问题。

于 2012-02-27T15:32:51.543 回答