Я пытаюсь создать пакет развертывания в 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>
Любая помощь будет оценена по достоинству. Спасибо