наследование значения от существующего параметра делает этот ответ гораздо более предпочтительным.

аюсь сделать подкаталог в пакете MS Deploy доступным для записи пользователю пула приложений. Благодаряполезный пост о провайдере setAcl Кевин Литам, я смог получить большую часть того, что мне нужно, в моем файле проекта:

<MsDeploySourceManifest Include="setAcl"
                        Condition="$(IncludeSetAclProviderOnDestination)">
  <Path>$(_MSDeployDirPath_FullPath)\doc\public</Path>
  <setAclAccess>Read,Write,Modify</setAclAccess>
  <setAclResourceType>Directory</setAclResourceType>
  <AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>

Обратите внимание, что я добавил «\ doc \ public» в корневой каталог развертывания. В результирующем манифесте, который создает VS2010, я вижу следующий элемент setAcl:

<sitemanifest>
  <contentPath path="C:\Source\...\obj\Debug\Package\PackageTmp" />
  <setAcl path="C:\Source\...\obj\Debug\Package\PackageTmp"
          setAclResourceType="Directory" />
  <setAcl path="C:\Source\...\obj\Debug\Package\PackageTmp"
          setAclUser="anonymousAuthenticationUser"
          setAclResourceType="Directory" />
  <setAcl path="C:\Source\...\obj\Debug\Package\PackageTmp\doc\public"
          setAclResourceType="Directory"
          setAclAccess="Read,Write,Modify" />
</sitemanifest>

Последняя строка выглядит хорошо: она добавлена ​​в подкаталог, который я хочу записать, и все модификаторы доступа, похоже, достаточно хорошо перенесены.

Однако при развертывании этого пакета я получаю сообщение об ошибке:

Ошибка: значение для параметра setAclUser должно быть указано, когда поставщик setAcl используется с физическим путем.

Это сбивает с толку ошибка, потому что я не пытаюсь установить ACL на физическом пути, а подкаталог веб-приложения. Глядя на результаты MS Deploy, легко увидеть проблему:

Info: Adding setAcl (REST Services\1.0.334).
Info: Adding setAcl (REST Services\1.0.334).
Info: Adding setAcl (C:\...\obj\Release\Package\PackageTmp\doc\public).

MS Deploy, очевидно, подставляет имя веб-приложения для моего абсолютного пути «C: ... \ obj \ Release \ Package \ PackageTmp», но когда я добавляю «\ doc \ public» к этому абсолютному пути, он больше не распознает его как каталог веб-приложений. Эта точная проблема описана другой жертвойна форумах ASP.NET без какого-либо разрешения.

Кто-нибудь знает, как установить ACL в определенном подкаталоге веб-приложения через Web Deploy без ручной идентификации физического пути и пользователя пула приложений на целевом хосте?

Ответы на вопрос(0)

Ваш ответ на вопрос