У меня есть функция, которая обеспечивает кучу файлов, включая макеты и изображения, на сайт MOSS. За время существования этого сайта мы несколько раз изменяли файл обеспечения, манифест элементов: добавление файлов, удаление файлов и изменение структуры файлов в папке компонентов. К сожалению, мы обнаружили, что если вы удалите файл из подготовительного документа, а затем снова включите функцию, SPFile удаленного файла останется в базе данных контента.
Поскольку эти файлы являются ghostable, у них есть свойство в базе данных контента sharepoint, называемое «SetupPath», которое по сути является относительным путем к папке «Шаблон» относительно исходного файла. Предполагается, что этот файл используется, когда файл находится в свободном состоянии. Поскольку я изменил свою функцию, этот путь установки относится к файлу, который не существует.
Последствия таковы: я больше не могу обновить файл в API, он не отображается через графический интерфейс, и когда я запускаю развертывание контента, полное развертывание контента, я получаю файл не найден. Хуже того, учитывая, что было удалено около 1000 таких файлов, при каждом полном развертывании контента возникают ошибки размером около 3,5 тыс. Толчок не прекращается, но многие ошибки приводят в замешательство и скрывают любые реальные катастрофические ошибки, если они возникают.
Наконец, если я обновлю файл, указав ему новый путь, то при ссылке на этот файл в sharepoint выдается 404. Очень плохо, если файл оказался макетом (все страницы, использующие его, не работают).
Я закодировал код для удаления SPF-файлов, которые больше не предоставляются, проблема решена. Однако файлы, которые все еще используются, но имеют неправильный путь установки, я в растерянности.
Я могу зайти в SPFile.Properties ["vti_setuppath"] и увидеть неправильный путь установки. Однако, хотя я могу установить это свойство, я не могу заставить его придерживаться. SPFile.Update () не работает, а также не проверяет вход и выход файла.
Любая помощь будет оценена.