"Доступ запрещен" на сервере сборки при развертывании проекта Web API с документацией XML

Чтобы создать документацию XML с помощью страниц справки веб-API для моего проекта веб-API, мне пришлось проверить параметр "Файл документации XML" в разделе "Builds" моих свойств проекта. Это правильно генерирует документацию при локальном создании.

Однако, когда я регистрируюсь, на сервере сборки появляется следующая ошибка:

CSC: Ошибка создания файла документации XML 'C:\Строит\3...\Sources\CurrentVersion...\ProjectName\App_Data\XmlDocument.xml' ( "Доступ запрещен".)

Я не уверен, почему это происходит, так как в любом случае он создает новый каталог для каждой сборки. Я искал эту проблему и искал Stack Overflow, но единственными решениями, которые я нашел, было удаление файла документации XML (который поражает цель использования страниц справки веб-API). Как я могу это решить?

Ответ 1

Если файл XML установлен в TFS, тогда, когда TFS получает файлы в рабочую область на сервере сборки, у него будет атрибут "Только для чтения", связанный с файлом. Теперь, когда сборка генерирует новый XML файл, он не сможет перезаписать старый файл XML, так как он имеет атрибут "только для чтения".

Решение: a) используйте скрипты сборки, чтобы изменить атрибут файла и сделать его чтение-запись b) удалите файл xml файла в TFS, чтобы сборка могла легко сгенерировать XML.

Обновление: если вы используете решение b, если файл является частью вашего файла проекта, убедитесь, что вы также удалили файл из файла csproj.

Ответ 2

Удаление файла из Source Control не исправило его для меня, Team Server все еще пытался получить к нему доступ.

Я смог решить это с помощью Cloaking App_Data в определении сборки.

Ответ 3

Несмотря на то, что вы создаете новый каталог для каждой сборки, этот каталог предназначен только для сборки. Сборка на самом деле не происходит в этом каталоге, она встречается в рабочей области tfs сервера, а результат сборки затем копируется в новый каталог. Ошибка отказа в доступе связана с тем, что проверенный файл просматривается только при доступе к tfs на рабочем пространстве сервера сборки, и поэтому файл не может быть повторно сгенерирован\перезаписан во время сборки.

Я обошел эту проблему, изменив путь вывода документации xml к папке bin.

Итак, Project- > Build → Output Выходной путь: bin \ Файл документации XML: bin/XmlDocument.xml

Я предлагаю вам сделать это для всех ваших конфигураций сборки (Project → Build, Configuration Drop Down menu → Select All Configurations)

Затем в разделе Project → Areas/HelpPage/App_Start/HelpPageConfig.cs измените config.SetDocumentationProvider, чтобы перейти к "~/bin/XmlDocument.xml"

Не забудьте удалить файл XmlDocument.xml из исходного элемента управления, так как он будет сгенерирован для каждой сборки