Как извлечь данные из XML-файла в приемнике событий Featurepoint 2010?

Я следую этому руководству и пытаюсь настроить код в приемнике событий.

Мне нужно 2 свойства, чтобы отправить в их метод SPWeb и строку.

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    // is there a way to make this non hardcoded? 
    SPSite site = new SPSite("http://localhost.com");
    SPWeb web = site.OpenWeb("/");
    string XMlPath = // get xml file path
    CreateGroups(web, path);
}

private void CreateGroups(SPWeb currentSite, string groupsFilename)
{

}

Поэтому я попытался использовать getFullPath, но это не сработало. Я также пытался использовать MapPath, но у меня не было доступа к этому.

Итак, как мне получить файл XML (я думаю, это то, что мне нужно)?

1 ответ

Решение
  1. Вам нужно избавиться от объекта SPSite / SPWeb, это обычно делается в using пункт.
  2. Вам не нужно использовать абсолютный путь (жесткий код) в получателе функции, так как функция уже ограничена областью веб / сайта
  3. ваш XmlPath обычно необходимо указать файл на сервере Sharepoint, который вы также развернули в своей функции - поскольку приемник функции работает после того, как все обычные файлы были развернуты, вы в порядке.

Без лишних слов, немного другой код:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    //Web scoped feature?
    //spWeb = (SPWeb) properties.Feature.Parent;
    //assuming Site scoped feature
    spWeb = ((SPSite) properties.Feature.Parent).RootWeb;

    using (spWeb)
    {
        string XmlPath = properties.Definition.RootDirectory + @"\Xmlfile\groups.xml"
        CreateGroups(spWeb, XmlPath);
    }
}

Итак, как вы можете получить свой XML-файл в "\Xmlfile\groups.xml"? Просто создайте модуль! (Добавить новый элемент> Модуль) elements.xml вашего модуля должен выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Module Name="Xmlfile" Path="Xmlfile">
        <File Path="groups.xml" Url="Xmlfile/groups.xml" />
    </Module>
</Elements>

Конечно, вам нужно добавить свой файл groups.xml в этот модуль (контекстное меню> Добавить существующий элемент), чтобы это работало.
Также обратите внимание, что вы можете легко отлаживать приемники функций, просто убедитесь, что для конфигурации развертывания установлено значение "Без активации" (Свойства проекта> Sharepoint > Активная конфигурация развертывания) - таким образом, вам нужно будет вручную активировать функцию на сайте (вместо этого Visual Studio делает это автоматически для вас в режиме отладки), но отладка будет работать без нареканий.

Другие вопросы по тегам