При получении файла в файле featureActivation возникает ошибка: «Значение не попадает в ожидаемый диапазон» - PullRequest
0 голосов
/ 02 ноября 2019

Я настроил копирование текстового файла из модуля в каталог сервера SharePoint.

<?xml version="1.0" encoding="utf-8"?>
 <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
   <Module Name="MyModule">
    <File IgnoreIfAlreadyExists="TRUE" Path="MyModule\newFile.txt" Url="MyModule/newFile.txt" />
  </Module>
</Elements>

После этого в featureActivation я собираюсь получить файл по следующему коду:

                try
                {
                    SPFile newFile = myWeb.GetFile(properties.Definition.RootDirectory + "\\MyModule\\newFile.txt");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

Я получил это исключение: «Значение не попадает в ожидаемый диапазон». Что со мной не так?

1 Ответ

0 голосов
/ 05 ноября 2019

Метод SPWeb.GetFile (String) получить файл с сайта SharePoint, свойства.Definition.RootDirectory возвращают локальный путь, вы получите исключение.

Я предлагаю вам загрузитьфайл в библиотеку документов, например, «Активы сайта» в корневой сети, затем получите файл в приемнике объектов.

Пример кода:

Elements.xml

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Module Name="MyModule" Url="SiteAssets" RootWebOnly="TRUE">
    <File IgnoreIfAlreadyExists="TRUE" Type="GhostableInLibrary" Path="MyModule\newFile.txt" Url="newFile.txt" />
  </Module>
</Elements>

Приемник функций

try
{
    SPWeb myWeb = SPContext.Current.Site.RootWeb;
    SPFile newFile = myWeb.GetFile(myWeb.ServerRelativeUrl + "/SiteAssets/newFile.txt");
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
...