настройка ACL для подпапок с помощью пакета Web Deploy - PullRequest
4 голосов
/ 18 ноября 2010

Я пытаюсь создать пакет развертывания в Visual Web Developer Express 2010, который устанавливает ACL для подпапки развернутого веб-сайта.Я использовал следующую информацию http://leethams.wordpress.com/2010/06/12/modifying-directory-permissions-with-web-deployment/

Это мой тест:

Создайте новое пустое приложение ASP.NET (в данном примере WebApplication2)

Дополнительнопараметры компиляции, измените целевую версию .NET Framework на 3.5

Создайте новую папку (в этом примере Config) и добавьте любой файл в папку

Создайте новый файл с именем WebApplication2.wpp.targets, с этим содержимым

<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action do also set ACLs -->
        <IncludeCustomACLs>TRUE</IncludeCustomACLs>
        <AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
            $(AfterAddIisSettingAndFileContentsToSourceManifest);
            SetCustomACLs;
        </AfterAddIisSettingAndFileContentsToSourceManifest>
    </PropertyGroup>
    <Target Name="SetCustomACLs" Condition="'$(IncludeCustomACLs)'=='TRUE'">
        <Message Text="Adding Custom ACls" />
        <ItemGroup>
            <MsDeploySourceManifest Include="setAcl" Condition="$(IncludeSetAclProviderOnDestination)">
                <setAclUser>anonymousAuthenticationUser</setAclUser>
                <path>$(_MSDeployDirPath_FullPath)</path>
                <setAclAccess>Read,Write</setAclAccess>
                <setAclResourceType>Directory</setAclResourceType>
                <AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
            </MsDeploySourceManifest>
        </ItemGroup>
    </Target>
</Project>

Я выполняю из командной строки, и все работает нормально:

-------------------------------------------------------
 Start executing msdeploy.exe
-------------------------------------------------------
 "C:\Program Files\IIS\Microsoft Web Deploy\\msdeploy.exe" -source:package='C:\T
emp\WebApplication2\WebApplication2\obj\Debug\Package\WebApplication2.zip' -dest
:auto,includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:
ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\Temp\WebApp
lication2\WebApplication2\obj\Debug\Package\WebApplication2.SetParameters.xml"

Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Número total de cambios: 3 (0 agregados, 0 eliminados, 3 actualizados, 0 parámet
ros cambiados, 0 bytes copiados)

Теперь, чтобы установить разрешения для папки Config, я изменяю следующую строку ипересоберите пакет развертывания.

<path>$(_MSDeployDirPath_FullPath)/Config</path>

Я получаю следующую ошибку:

-------------------------------------------------------
 Start executing msdeploy.exe
-------------------------------------------------------
 "C:\Program Files\IIS\Microsoft Web Deploy\\msdeploy.exe" -source:package='C:\T
emp\WebApplication2\WebApplication2\obj\Debug\Package\WebApplication2.zip' -dest
:auto,includeAcls='False' -verb:sync -disableLink:AppPoolExtension -disableLink:
ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\Temp\WebApp
lication2\WebApplication2\obj\Debug\Package\WebApplication2.SetParameters.xml"

Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (Default Web Site/WebApplication2_deploy).
Info: Actualizando setAcl (C:\Temp\WebApplication2\WebApplication2\obj\Debug\Pac
kage\PackageTmp/Config).
Error: Se debe especificar un valor para 'setAclUser' cuando se usa el proveedor
 'setAcl' con una ruta de acceso física.
Recuento de errores: 1.

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

Затем я попытался изменить его следующим образом:

<AdditionalProviderSettings>setAclUser;setAclResourceType;setAclAccess</AdditionalProviderSettings>

Ноошибка остается.Если я выполняю пакет развертывания с ключом «/ t», он не выдает ошибку, хотя все равно показывает физический путь.Я могу жестко закодировать путь IIS и изменить строку следующим образом:

<path>Default Web Site/WebApplication2_deploy/Config</path>

Работает нормально.Однако я не хотел бы этого делать, так как путь установки должен быть параметризован.

Изменение пути к задней классу не имеет значения:

<path>Default Web Site/WebApplication2_deploy\Config</path>

Любая помощь будет принята с благодарностью,Спасибо

1 Ответ

2 голосов
/ 10 октября 2011

Я думаю, что ссылка здесь показывает, как параметризовать путь.

Может ли поставщик setAcl Web Deploy быть использован в подкаталоге?

...