Visual Web Developer Express 2010 で、展開された Web サイトのサブフォルダーに 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.
英語では、「エラー: 'setAcl' プロバイダーを物理パスで使用する場合、'setAclUser' の値を指定する必要があります」と表示されます。3 番目の setAcl が、展開パッケージが配置されている物理パスに変更されていることに注意してください。
次に、このように変更しようとしました:
<AdditionalProviderSettings>setAclUser;setAclResourceType;setAclAccess</AdditionalProviderSettings>
しかし、エラーは残ります。「/t」スイッチを使用して展開パッケージを実行すると、エラーはスローされませんが、物理パスは引き続き表示されます。IIS パスをハードコーディングして、次のように行を変更できます。
<path>Default Web Site/WebApplication2_deploy/Config</path>
それは正常に動作します。ただし、インストール パスをパラメーター化する必要があるため、そうしたくありません。
パスをバックスラッシュに変更しても違いはありません。
<path>Default Web Site/WebApplication2_deploy\Config</path>
どんな助けでも大歓迎です。ありがとう