WebServiceHost внутри дополнения VSTO
Я занимаюсь разработкой надстройки VSTO уровня приложения, которая состоит, среди прочего, из пользовательского интерфейса со встроенным Webbrowser
управление и простой сервис в стиле REST, основанный на WCF WebServiceHost
, Сервис доставляет контент, в частности флэш-фильмы, во встроенный браузер. Это работало как шарм до вчерашнего дня. По какой-то пока неизвестной причине (возможно, какое-то обновление.NET, которое изменило некоторую внутреннюю обработку), полное приложение Word теперь зависает, когда браузер загружает флэш-ролик со встроенного сервера. Он по-прежнему работает, когда я перемещаю код веб-сервера в отдельный процесс, и он также работает, когда флэш-ролик уже находится в кэше браузера, поэтому я совершенно уверен, что это комбинация показа и показа флэш-фильма как в надстройке. это вызывает проблему.
Я провел некоторое исследование (которое я должен был сделать раньше, возможно) и узнал, что многопоточность и надстройки VSTO не подходят друг другу. А запуск веб-сервиса наверняка подразумевает какую-то многопоточность.
Итак, мой вопрос: есть ли шанс заставить этот вид архитектуры работать надежно? Если так: что мне не хватает? Или мне лучше попробовать другой подход? Если так: что бы вы порекомендовали?
Примечание. Использование URL-адресов "file://" и, таким образом, загрузка содержимого непосредственно с диска - не вариант, так как я не могу гарантировать общий документирование и мне нужно установить некоторую логику между пользовательским интерфейсом и обслуживанием содержимого.
1 ответ
Надстройки VSTO являются STA, поэтому вам следует рассмотреть возможность изучения WCF и STA ( см. Соответствующую статью SO).
Вы всегда можете разместить службу WCF в качестве службы Windows, чтобы избежать проблем STA узла надстройки VSTO.