gpt4 book ai didi

api - Web 部署 API(部署 .zip 包)说明

转载 作者:行者123 更新时间:2023-12-02 02:22:07 28 4
gpt4 key购买 nike

我正在使用网络部署 API 来部署网络包(.zip 文件,由 MSDeploy.exe 创建)以编程方式将包发布到服务器(在发布包之前我们需要做一些其他事情这就是为什么我们不使用 MSDeploy.exe 一次性完成所有工作的原因)。

这是我的代码。我的问题实际上是澄清执行此操作时发生的情况。在包参数 XML 文件中,我指定了应用程序名称(“默认网站”),仅此而已,其中没有指定其他参数。从测试服务器来看,包似乎已成功部署,但我的问题是我正在部署的服务器上的任何其他设置是否在我不知情的情况下被更改,是否发布了任何默认设置等?诸如安全设置、目录浏览等我可能不知道的事情?此处的代码似乎部署了程序包,但当我不确定此 API 的工作原理时,我很担心在生产环境中使用它。 MS 文档没有帮助(实际上更像是不存在的)。

DeploymentChangeSummary changes;

string packageToDeploy = "C:/MyPackageLocation.zip";
string packageParametersFile = "C:/MyPackageLocation.SetParameters.xml";

DeploymentBaseOptions destinationOptions = new DeploymentBaseOptions()
{
UserName = "MyUsername",
Password = "MyPassword",
ComputerName = "localhost"
};

using (DeploymentObject deploymentObject = DeploymentManager.CreateObject(DeploymentWellKnownProvider.Package,
packageToDeploy))
{
deploymentObject.SyncParameters.Load(packageParametersFile);
DeploymentSyncOptions syncOptions = new DeploymentSyncOptions();
syncOptions.WhatIf = false;

//Deploy the package to the server.
changes = deploymentObject.SyncTo(destinationOptions, syncOptions);
}

如果有人能阐明此代码段应将包部署到服务器上的网站应用程序,而不更改任何现有服务器设置(除非在 SetParameters.xml 文件中指定),那将非常有帮助。任何有关使用 API 的好资源或 Web 部署如何在幕后工作的解释也将不胜感激!

最佳答案

setparameters 文件只控制包中定义的参数值。一个包可能做的远不止这些。 Web 部署有提供者的概念,任何给定的包都可以有一个或多个提供者。

如果您想确保包不会更改服务器端设置,您可以采取的最佳方法是使用 API,但通过 Web 管理服务部署包。这会给你带来两个好处:

  1. 您可以控制允许通过哪些提供商。
  2. 您可以添加用户并授予他们有限的权限以部署到他们的站点或文件夹等。

替代方法是:

  1. 在包中手动查看 archive.xml 并在包中查找提供程序。只要您没有看到以下任何可能导致服务器设置更改的提供程序,例如 apphostconfig 或 webserver 或 regkey(这不是一个完整的列表),您就应该没问题。 Runcommand 是一个允许您执行批处理脚本或命令的提供程序。虽然它对管理员本身来说是一个很好的提供程序,但您需要考虑是否要允许运行包含此类提供程序的程序包。

  2. 您可以在代码中执行上述检查,方法是对您从包中创建的部署对象调用 getchildren,并检查提供程序和提供程序路径。

关于api - Web 部署 API(部署 .zip 包)说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7634603/

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