1

Я собираюсь разработать добавочный уровень VSTO на уровне приложений, который состоит, среди прочего, из пользовательского интерфейса со встроенным управлением Webbrowser и простой службы типа REST, основанной на WCF WebServiceHost. Служба предоставляет контент, в частности флеш-ролики, во встроенный браузер. Раньше это работало как прелесть. По какой-то еще неизвестной причине (возможно некоторое обновление .NET, которое изменило внутреннюю обработку), теперь приложение Word теперь зависает, когда браузер загружает флеш-фильм со встроенного сервера. Он по-прежнему работает, когда я перемещаю код веб-сервера в отдельный процесс, и он также работает, когда флеш-фильм уже находится в кеше браузера, поэтому я совершенно уверен, что это комбинация обслуживания и отображения флеш-ролика как в дополнении что вызывает проблему.WebServiceHost внутри VSTO addin

Я провел некоторое исследование (, которое я должен был сделать раньше, может быть), и узнал, что многопоточные и VSTO-дополнения не сочетаются друг с другом. И запуск web-сервиса наверняка подразумевает какую-то многопоточность.

Итак, мой вопрос: есть ли вероятность сделать такую ​​архитектуру надежной? Если да: чего мне не хватает? Или мне лучше попробовать другой подход? Если да: что бы вы порекомендовали?

Примечание:Использование «файл: //» URL и, следовательно, загрузку содержимого непосредственно с диска не вариант, так как я не могу гарантировать общую DOCROOT и нужно положить некоторую логику между UI и содержание обслуживающего ,

ответ

1

VSTO надстроек STA, поэтому вы должны рассмотреть исследования WCF и STA (see related SO post).

Вы всегда можете указать host the WCF service as a windows service, чтобы избежать проблем с STA узла надстройки VSTO.

+0

+1 для этой очень интересной ссылки - это, к сожалению, не решает проблему. Вызов-поток с состоянием квартиры STA по-прежнему возвращается (с результатом FileStream) - похоже, что замораживание происходит где-то внутри самой .NET, где FileStream используется для заполнения ответа HTTP. - Использование службы Windows не очень нравится в ИТ-операциях некоторых пользователей addin. Поэтому в настоящее время я пытаюсь запустить службу WCF в отдельном процессе, запущенном и контролируемом добавлением. – Matthias

+0

Matthias - вы используете 'Process.Start' или просто загружаете еще один« AppDomain », чтобы изолировать процессы? – SliverNinja

+0

Я использую Process.Start и до сих пор работаю достаточно хорошо. Однако это не очень элегантное решение. И я еще не слишком уверен, что все еще могут быть скрытые проблемы. Честно говоря, я даже не думал о создании отдельного AppDomain. Считаете ли вы, что это может сработать? – Matthias

 Смежные вопросы

  • Нет связанных вопросов^_^