VSTO 插件内的 WebServiceHost

发布于 2025-01-08 03:48:18 字数 626 浏览 0 评论 0原文

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

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

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

注意: 使用“file://”网址并直接从磁盘加载内容不是一个选项,因为我无法保证通用的文档根目录,并且需要在 UI 和 UI 之间放置一些逻辑。内容服务。

I'm about developing an application level VSTO addin that consists, among others, of a UI with an embedded Webbrowser control and a simple REST-style service, based upon WCF's WebServiceHost. The service delivers content, in particular flash movies, to the embedded browser. This used to work like a charm until yesterday. For some still unknown reason (maybe some .NET update that changed some internal processing), the complete Word application now freezes when the browser loads a flash movie from the embedded server. It still works when I move the webserver code into a separate process, and it also works when the flash movie is already in the browser cache, so I am quite sure that it is the combination of serving and displaying the flash movie both in the addin that is causing the problem.

I did some research (which I should have done earlier, maybe) and learned that multi-threading and VSTO addins do not go well together. And running a webservice surely implies some kind of multi-threading.

So my question is: is there any chance to make this kind of architecture run reliably? If so: what am I missing? Or should I better try another approach? If so: what would you recommend?

Note: Using "file://" urls and thus loading the content directly from the disk is not an option since I cannot guarantee a common docroot and need to put some logic between the UI and the content serving.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

差↓一点笑了 2025-01-15 03:48:18

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

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

VSTO add-ins are STA, so you should consider researching WCF and STA (see related SO post).

You could always host the WCF service as a windows service to avoid the STA issues of the VSTO add-in host.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文