2010-10-26 3 views
2

Я разрабатываю решение SharePoint 2010, которое состоит из некоторых веб-частей и других компонентов. Кроме того, для конфигурации нужны страницы приложений в Центре администрирования.Автоматическое развертывание файлов ресурсов в папке App_GlobalResources центрального администрирования при развертывании решения для веб-приложения

Таким образом, мое решение содержит дополнительную функцию, которая помещает пользовательские действия в меню центра администрирования, которое ссылается на страницу приложения, предоставляющую конфигурацию. Эта функция имеет область WebApplication и использует атрибут AutoActivateInCentralAdmin, установленный на True, поэтому функция автоматически активируется в Центре администрирования, когда решение развертывается в веб-приложении. Эта часть моего решения работает так, как ожидалось.

Но у меня есть некоторые проблемы с файлами ресурсов, которые используются страницами приложения в Центре администрирования, поскольку они только развертываются в папке App_GlobalResources веб-приложения, решение было развернуто, но не с App_GlobalResources Центральное управление.

Так что мне интересно, почему использовать AutoActivateInCentralAdmin, когда нет автоматического развертывания файлов ресурсов в папке App_GlobalResources центра администрирования.

Каков наилучший способ развертывания файлов ресурсов в папке Central Administrations App_GlobalResources всякий раз, когда решение развертывается в любом веб-приложении в ферме? Есть ли автоматический способ этого?

ответ

2

Здесь мы говорим о ресурсах приложений (в отличие от ресурсов инициализации), и их следует развернуть в папку {SharePointRoot} \ CONFIG \ Resources. Убедитесь, что файлы ресурсов, используемые вашими страницами приложений, развернуты в этой папке при развертывании вашего WSP.

Когда создается новое веб-приложение, ресурсы изначально копируются в папку App_GlobalResources, вы в порядке.

Но когда веб-приложение уже создано (это ваш случай), вам нужны ресурсы для копирования в существующие веб-приложения. Вы можете сделать это вручную, с помощью этой команды

Stsadm -o copyappbincontent

Или вы можете автоматизировать (что вы хотите) это, в том числе следующие в вашем FeatureActivated случае в вашем особенность приемника. Для ресурсов и карт сайта Центра администрирования позвоните по телефону

SPWebService.AdministrationService.ApplyApplicationContentToLocalServer(); .

Для обычной странице приложения ресурсов и карты сайта,

SPFarm.Local.Services.GetValue() ApplyApplicationContentToLocalServer();

+0

Исправьте меня, если я ошибаюсь, но как stsadm -o copyappbincontent, так и ApplyApplicationContentToLocalServer() копируют только файлы ресурсов на локальном сервере. Таким образом, на ферме вам нужно будет выполнить команду (одну или на каждом веб-сервере переднего конца. Это решение для меня не является вариантом. – Flo

+0

Игнорировать мой первый комментарий, я нажал «добавить комментарий», прежде чем я его закончил. ==> Исправьте меня, если я ошибаюсь, но как stsadm -o copyappbincontent, так и ApplyApplicationContentToLocalServer() копируют только файлы ресурсов на локальном сервере.Таким образом, на ферме вы столкнетесь с двумя проблемами. С помощью stsadm вам нужно будет выполнить команду на каждом интерфейсном сервере. С помощью метода ApplyApplicationContentToLocalServer() в приемнике функций ресурс будет скопирован только на сервере, на котором была активирована функция, но не на всех внешних серверах. Поэтому оба варианта не для меня. – Flo

+0

Я вижу твои проблемы. Есть люди, которые столкнулись с подобной проблемой, и я знаю, что в мире MOSS они закончили работу пользовательского таймера, которая запускается во время активации функции. Возможно, вы столкнулись с этим как часть вашего расследования, но все же ..: http://sharepointinterface.com/2009/06/06/the-applyapplicationcontenttolocalserver-method-and-why-it-comes-up-short/ –

1

Для этого вам необходимо создать собственное задание таймера. Если вы ищете в Интернете, некоторые люди уже разработали такую ​​работу.

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