gpt4 book ai didi

acl - 使用 Web Deploy 和 ACL 进行部署时出现问题

转载 作者:行者123 更新时间:2023-12-04 14:41:51 26 4
gpt4 key购买 nike

我正在使用 Web Deploy 将 Web 应用程序部署到我的主机。当使用 Publish 命令从 Visual Studio 运行时,它工作正常。当我尝试使用 MSBuild 的 web 部署进行部署时,网站变得无法访问,甚至我的网络主机的网络控制面板也无法再访问该网站。我已经追踪到我认为是网站文件夹的权限。

从 Visual Studio 发布更新 ACL,网站正常运行,Web 主机的控制面板正常工作(即使之前通过 MSBuild 的部署破坏了它)。

以下是从 Visual Studio 运行时的输出:

------ Publish started: Project: mywebapp, Configuration: Release Any CPU ------
Transformed Web.config using Web.Release.config into obj\Release\TransformWebConfig\transformed\Web.config.
Auto ConnectionString Transformed Views\Web.config into obj\Release\CSAutoParameterize\transformed\Views\Web.config.
Auto ConnectionString Transformed obj\Release\TransformWebConfig\transformed\Web.config into obj\Release\CSAutoParameterize\transformed\Web.config.
Copying all files to temporary location below for package/publish:
obj\Release\Package\PackageTmp.
Start Web Deploy Publish the Application/package to https://myhost.net:8172/MsDeploy.axd?site=mywebapp.com ...
Updating setAcl (mywebapp.com).
Updating setAcl (mywebapp.com).
Updating filePath (mywebapp.com\bin\mywebapp.Core.dll).
Updating filePath (mywebapp.com\bin\mywebapp.Core.pdb).
Updating filePath (mywebapp.com\bin\mywebapp.dll).
Updating filePath (mywebapp.com\bin\mywebapp.pdb).
Updating filePath (mywebapp.com\Views\Web.config).
Updating filePath (mywebapp.com\web.config).
Updating setAcl (mywebapp.com).
Updating setAcl (mywebapp.com).
Publish is successfully deployed.
========== Build: 2 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

我发现了一个我认为 Visual Studio 在部署期间使用的文件,其中包含 ACL 信息。它叫 myapp.SourceManifest.xml 并在 C:\Projects\mywebapp\obj\Release\Package 文件夹。
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
<contentPath path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" />
<setAcl path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" setAclResourceType="Directory" />
<setAcl path="C:\Projects\mywebapp\obj\Release\Package\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" />
</sitemanifest>

我的 MSBuild 文件包含以下内容以执行部署:
<Exec Command='"$(ProgramFiles)\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="mywebapp\obj\test\package\mywebapp.zip" -dest:auto,computername="https://myhost.net:8172/MsDeploy.axd?site=mywebapp.com",username=XXXX,password=XXXX,authtype=basic -allowuntrusted:true -setparam:name="IIS Web Application Name",value="mywebapp.com"' />

当我运行 MSBuild 进行部署时,我可以看到文件正在更新,但没有更新 ACL。

由于不同的配置(测试而不是发布)和 ,我的 MSBuild 部署来自不同的文件夹。 mywebapp.SourceManifest.xml 文件不同。
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
<IisApp path="C:\Projects\mywebapp\obj\Test\Package\PackageTmp" managedRuntimeVersion="v4.0" />
</sitemanifest>

不一样的 mywebapp.SourceManifest.xml 文件可能与它有关吗?我需要做什么才能更新 ACL?

更新

我发现 的区别mywebapp.SourceManifest.xml 文件是由我的测试配置的 .csproj 文件中存在以下内容引起的。
<IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination>

我已将其更改为 现在 list 文件在测试和发布配置之间是相同的。

我还发现,当使用 Visual Studio 发布时,它适用于发布但无法用于测试。所以我现在试图找出导致部署成功或失败的两种配置之间的不同之处。

最佳答案

我设法让它工作。根据我的网络主机的说法,他们正在与 Microsoft 的 Web 部署和 IIS 团队合作解决 Web 部署的一些问题,他们不得不在服务器上应用一些临时修复程序。奇怪,因为它在几个月前就可以使用了。

我最终恢复了 <IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination>在我的项目文件中设置以防止 Web 部署接触 ACL。我的网络主机说它正在删除应用程序池标识的权限并阻止网络控制面板能够访问网站文件夹。

他们还告诉我添加 <_MSDeployVersionsToTry Condition="'$(_MSDeployVersionsToTry)'==''">7.1;8.0;9.0</_MSDeployVersionsToTry>到项目文件。我添加了它,虽然我不确定它是否有所作为。

关于acl - 使用 Web Deploy 和 ACL 进行部署时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6477188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com