相关疑难解决方法(0)

Web Deploy的setAcl提供程序可以在子目录中使用吗?

我正在尝试在MS Deploy包中创建一个可写入应用程序池用户的子目录.感谢Kevin Leetham 关于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>
Run Code Online (Sandbox Code Playgroud)

请注意,我已将"\ 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>
Run Code Online (Sandbox Code Playgroud)

最后一行看起来很好:它附加了我想要写的子目录,并且访问修饰符似乎已经转移得足够好了.

但是,当我部署此包时,我收到一个错误:

错误:当'setAcl'提供程序与物理路径一起使用时,必须指定'setAclUser'设置的值.

这是一个令人困惑的错误,因为我并没有尝试在物理路径上设置ACL,而是在Web应用程序的子目录中.查看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).
Run Code Online (Sandbox Code Playgroud)

MS Deploy显然用我的绝对路径"C:...\obj\Release\Package\PackageTmp"替换了Web应用程序名称,但当我将"\ doc\public"附加到该绝对路径时,它不再将其识别为Web应用程序目录.这个确切的问题是由另一个受害者在ASP.NET论坛上描述而没有任何解决方案.

有没有人知道如何通过Web Deploy在Web应用程序的特定子目录上设置ACL,而无需在目标主机上手动识别物理路径和应用程序池用户?

iis-7 visual-studio-2010 msdeploy webdeploy

18
推荐指数
1
解决办法
1万
查看次数

标签 统计

iis-7 ×1

msdeploy ×1

visual-studio-2010 ×1

webdeploy ×1