Web 部署错误代码

作者 :比拉尔·阿拉姆

对于某些常见错误情况,Web 部署将显示错误代码。 此表说明了错误发生的原因,以及用户可以执行的步骤以避免错误。 请注意,根据调用 Web 部署的方式(例如,Microsoft WebMatrix 选择显示自定义错误消息)的错误消息可能会有所不同。 下面列出的错误消息显示在msdeploy.exe命令行和 API 上:

MySqlDumpNotFound

诊断:Web 部署找不到mysqldump.exe可执行文件。 MySQL 数据库部署需要此可执行文件。

解决方法:有两种解决方法:

  1. 将可执行文件放入 C:\Program Files\MySQL\MySQL Server 5.1\bin
  2. 将REG_SZ注册表项设置为指向可执行文件:例如, (HKEY\_LOCAL\_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2\MySqlDumpPath 设置为“c:\mysqldump\mysqldump.exe”

RemoteAppNotFound

诊断:找不到远程应用程序。 如果尝试执行“remotesite/remoteapp”的转储,其中“remoteapp”实际上不存在,可能会发生这种情况

解决方法:指定实际存在的远程应用程序名称

FileOrFolderNotFound

诊断:如果尝试对不存在的文件或文件夹执行 SetAcl,可能会发生这种情况。

解决方法:指定存在的文件或文件夹。

ERROR_DESTINATION_INVALID

诊断:计算机名称类型错误,或者无法访问计算机。

解决方法:尝试检查 computername 是否有效。 请尝试手动 ping 计算机。

ERROR_DESTINATION_NOT_REACHABLE

诊断:远程计算机上未安装或无法访问 Web 管理服务或远程代理。

解决方法:验证远程代理服务或 Web 管理服务是否在远程计算机上启动,具体取决于要连接到哪个计算机。 可以在远程计算机上执行“net start wmsvc net start msdepsvc & ”,以确保这些服务已启动。 此外,请确保防火墙不会中断与目标的通信。

ERROR_USER_UNAUTHORIZED

诊断:由于多种不同原因,此错误代码可能会浮出水面。 它通常指示身份验证或授权问题,并可能由于以下任何原因而发生:

  • 用户不存在
  • 如果使用 Web 管理服务进行连接,则用户无权访问站点
  • 网站不存在
  • 密码不正确

解决方法:如果使用 Web 管理服务进行连接:

  • 验证用户名和密码是否正确
  • 验证站点是否存在
  • 验证用户是否具有对站点范围的 IIS 管理器权限

解决方法:如果使用远程代理服务进行连接:

  • 验证用户名和密码是否正确
  • 验证指定的用户帐户是否是远程计算机上的 Administrators 组的成员。 注意:如果不使用内置管理员,请创建名为“MSDepSvcUsers”组的新组,并将新管理员添加到该组。
  • 验证站点是否存在

ERROR_USER_NOT_ADMIN

诊断:如果尝试连接到远程代理服务,但未提供适当的管理员凭据,则会发生此情况。

解决方法:远程代理服务接受内置管理员或域管理员凭据。 如果你有非域设置,并且想要使用内置管理员的其他帐户,请执行以下操作:

  • 在远程计算机上创建单独的用户组 MSDepSvcUsers。
  • 在本地远程计算机上创建本地 & 帐户 A。
  • 将 A 添加到远程计算机上的 MSDepSvcUsers。
  • 使用帐户 A 进行发布,这样就可以发布,而无需使用内置管理员帐户。

ERROR_CERTIFICATE_VALIDATION_FAILED

诊断:Web 部署终结点提供的证书不受信任或无效。 如果远程服务器具有远程代理服务或 Web 管理服务的自签名证书,则通常会发生这种情况。

解决方法:在终结点上安装受信任的证书,或尝试绕过证书验证。

  • 在msdeploy.exe命令行中,可以通过传递 -allowUntrusted 标志来执行此操作。
  • 从 Visual Studio 2010 发布 UI 中,可以检查“允许不受信任的”
  • 从 Visual Studio 2010 部署包 ((例如 MyApp.deploy.cmd) )传递 -allowUntrusted 标志
  • 添加到 <AllowUntrustedCertificate>true</AllowUntrustedCertificate> pubxml 文件:
<PropertyGroup>
  <AllowUntrustedCertificate>true</AllowUntrustedCertificate>
</PropertyGroup>

ERROR_PROXY_GATEWAY

诊断:代理网关阻止 Web 部署与远程 Web 部署终结点通信。

解决方法:Web 部署不会读取系统代理设置。 解决方法是尝试禁用系统代理:

  • 启动 Internet Explorer
  • 单击“工具选项”>
  • 单击“连接”
  • 单击 LAN 设置
  • 禁用所有复选框

ERROR_SITE_DOES_NOT_EXIST

诊断:指定的 IIS 站点不存在。

解决方法:验证指定的网站是否确实存在。

在某些情况下,如果在网站 URL 中指定了“/”而不是“”,可能会收到此错误。 请尝试将“/”更改为“”。

ERROR_APP_DOES_NOT_EXIST

诊断:IIS 中不存在指定的应用程序。

解决方法:检查 IIS 管理器,确保正确指定了应用程序路径的名称。

ERROR_USER_NOT_AUTHORIZED_FOR_IISAPP,

ERROR_USER_NOT_AUTHORIZED_FOR_DBFULLSQL,
ERROR_USER_NOT_AUTHORIZED_FOR_DBMYSQL,
ERROR_USER_NOT_AUTHORIZED_FOR_SETACL,
ERROR_USER_NOT_AUTHORIZED_FOR_APPPOOLNETFX,
ERROR_USER_NOT_AUTHORIZED_FOR_APPPOOLPIPELINE,
ERROR_USER_NOT_AUTHORIZED_FOR_RECYCLEAPP,
ERROR_USER_NOT_AUTHORIZED_FOR_CREATEAPP,
ERROR_USER_NOT_AUTHORIZED_FOR_CONTENTPATH

上面列出的错误组共享以下诊断、解决方法和解决方法:

诊断:非管理用户尝试使用用户当前未授权的 Web 部署提供程序执行操作。

解决方法:默认情况下,Web 部署 2.0 设置会创建管理服务委派规则,允许非管理员使用此提供程序执行操作。 此提供程序所需的委派规则可能尚未正确设置。
解决方法:从程序控制面板运行 Web 部署 2.0 上的修复。 或者, 手动创建委派规则。

ERROR_USER_NOT_AUTHORIZED_FOR_DEPLOYMENTPROVIDER

诊断:非管理用户尝试使用用户当前未授权的 Web 部署提供程序执行操作。 如果用户尝试对 Web 部署 2.0 的设置不创建委派规则的提供程序执行操作,则此错误代码将浮出水面。

解决方法:Web 部署 2.0 安装程序不会为此提供程序创建委派规则。 手动创建委派规则。

ERROR_INSUFFICIENT_ACCESS_TO_SITE_FOLDER

诊断:如果以非管理员身份通过 Web 管理服务进行连接,则此错误代码可能会浮出水面:

  • 如果使用 IIS 管理器凭据进行连接,Web 管理服务的标识通常 (本地服务) 需要对站点根文件夹拥有完全控制权限才能创建下面的文件和文件夹。
  • 如果使用 Windows 凭据进行连接,Windows 用户需要完全控制站点的根文件夹,才能在下方创建文件和文件夹。

解决方法:授予对站点根文件夹的适当帐户完全控制。 也可使用以下命令:

  • 启动 IIS 管理器,然后右键单击有问题的站点
  • >单击“部署配置 Web 部署发布”
  • 选择适当的用户名
  • 单击“设置”

ERROR_INSUFFICIENT_ACCESS_TO_APPHOSTCONFIG

诊断:为 createApp 委派规则指定的 RunAs 标识需要对 IIS 服务器的applicationHost.config文件进行写入访问。

解决方法:授予 createApp 委派规则的 RunAs 标识对 IIS 服务器的applicationHost.config文件的写入访问权限。

ERROR_INVALID_CONNECTION_STRING

诊断:指定了无效的数据库连接字符串,导致 dbFullSql 或 dbMySql 提供程序无法正确运行。 如果连接字符串格式不正确, (例如 Se v ver=localhost;...) ,或者连接字符串包含目标数据库服务器无法识别的键,则可能会出现这种情况。

解决方法:验证连接字符串是否有效。

ERROR_SQL_EXECUTION_FAILURE

诊断:发生 SQL 脚本执行失败。 这种情况可能发生在 va 中

解决方法:出于多种原因,可能会发生这种情况。 请 在此处阅读详细信息。

ERROR_TYPE_NOT_FOUND_IN_ASSEMBLY

诊断:Web 部署的 dbFullSql 提供程序需要服务器管理对象版本 10 或更高版本。

解决方法:由于缺少依赖项,SQL 提供程序无法运行。 请确保 Microsoft SQL Server 管理对象(版本 10 或更高版本)已安装。

ERROR_OBJECT_TO_BE_DELETED_DOES_NOT_EXIST

诊断:Web 部署最初发现要删除的对象,但在尝试删除对象时,它缺失。

解决方法:确保在执行同步时没有其他外部进程正在修改目标。

ERROR_APPPOOL_VERSION_MISMATCH

诊断:源应用程序池版本不同于目标应用程序池版本。

解决方法:可以手动更改应用程序池版本以在源和目标之间匹配,或使用 apppoolnetfx 提供程序自动执行此操作。

ERROR_CENTRAL_CERT_STORE_SETTINGS_CANNOT_BE_READ

诊断:中央证书存储不能用于当前配置。

解决方法:需要确保使用的是 IIS 8 或更高版本。 如果在 64 位服务器上运行msdeploy.exe,请确保使用的是 64 位版本的可执行文件。

ERROR_CENTRAL_CERT_STORE_NOT_CONFIGURED_PROPERLY

诊断:未正确安装或设置集中式 SSL 证书存储。 IIS 7.5 或更早版本也不支持此功能。

解决方法:验证同步到/从中同步的服务器是否正在运行 IIS 8 或更高版本。 此外,请验证集中 SSL 证书存储是否已在该服务器上安装和配置。

ERROR_MISSING_REQUIRED_DEPENDENCIES

诊断:AppHostAuthOverride 提供程序需要 IIS7 或更高版本。

解决方法:确保正在修改的目标服务器正在运行 IIS7 或更高版本。

ERROR_COULD_NOT_CONNECT_TO_REMOTESVC

诊断:Web 部署无法连接到远程服务。

解决方法:确保:

  1. 可以 ping 远程计算机
  2. msdepsvc 或 wmsvc 服务在远程服务器上启动。
  3. 防火墙不会阻止目标上的端口的传入连接。 如果使用了默认安装,则 msdepsvc 为 80,对于 wmsvc 为 8172。

ERROR_FRAMEWORK_VERSIONS_DO_NOT_MATCH

诊断:如果在两台安装了不同版本的 .Net 的计算机之间执行 Web 服务器同步,可能会发生这种情况。

解决方法:默认情况下,Web 部署将有利于在其配置文件中指定的 .Net 版本中运行。 如果客户端上使用的 .Net 版本与服务器上的版本不同,我们将阻止 Web 服务器同步,以防止迁移不同版本的 .Net 的设置。 若要解决此问题,有两个选项:

  1. 使用 netFxVersion 提供程序设置告知 Web 部署要迁移的 .Net 设置。 下面是一个命令行示例,该示例强制 Web 部署同步 .Net 2.0 设置:

    msdeploy.exe -verb:sync -source:webserver,machineconfig32.netfxversion=2,machineconfig64.netfxversion=2,rootwebconfig32.netfxversion=2,rootwebconfig64.netfxversion=2 -dest:webserver,machineconfig32.netfxversion=2,machineconfig64.netfxversion=2,rootwebconfig32.netfxversion=2,rootwebconfig64.netfxversion=2,computername=destServername

  2. 在客户端和服务器之间在同一版本的 .Net 中运行 Web 部署。 在客户端上,可以更改文件中 %programfiles%\IIS\Microsoft Web Deploy V3\msdeploy.exe.config 支持的Runtime 版本元素的排序,该元素指定为第一个 ( (查看 gacInstall 提供程序 ,了解此) 的示例。 这将指示将加载的 .Net 版本,假设它安装在系统上。 在服务器端,可以为该操作执行相同的 %programfiles%\IIS\microsoft web deploy\msdepsvc.exe.config操作。 如果修改此文件,请确保重启 Web 部署代理服务 (net stop msdepsvc net start msdepsvc &) 。

ERROR_HTTPCERT_BINDING_NOT_FOUND

诊断:找不到指定的绑定。

解决方法:从命令行运行“netsh http show sslcert”,以验证指定的绑定是否存在。 如果未找到,则可能需要通过 IIS 管理器重新创建它。

ERROR_INCORRECT_PARAMETER_TAG

诊断:传递了不正确的参数标记。

解决方法:使用标记 SQL、SQLCE 或 MYSQL 重新运行 msdeploy。

ERROR_INVALID_PATH

诊断:提供程序路径无效。

解决方法:根据所使用的提供程序,提供程序所需的路径可能有所不同。 请访问 https://technet.microsoft.com/library/dd569040(WS.10).aspx ,了解有关你正在使用的提供商的详细信息。

ERROR_INVALID_SETTING_SPECIFIED

诊断:指定的提供程序设置无效。

解决方法:请访问 Technet ,了解有关你正在使用的提供商的详细信息。

ERROR_INVALID_SETTING_VALUE_SPECIFIED

诊断:提供程序设置值无效。

解决方法:请访问 Technet ,了解有关你正在使用的提供商的详细信息。

ERROR_SNI_BINDINGS_NOT_SUPPORTED

诊断:SNI 绑定仅在 IIS 8 或更高版本上受支持。

解决方法:只能在 IIS 8 或更高版本上创建 SNI 绑定。

ERROR_FAILED_TO_RESTORE_BACKUP

诊断:Web 部署无法还原备份。

解决方法:验证:

  1. 指定的备份存在于服务器上。
  2. 如果备份中有一个数据库,则连接字符串在连接字符串提供程序设置中指定。

ERROR_BACKUPS_ARE_NOT_CONFIGURED_PROPERLY

诊断:备份功能未在目标服务器上正确配置。

解决方法:检查事件日志中是否存在有关哪些设置配置不当的提示。 验证存储在applicationHost.config文件中的设置是否符合 IIS 架构文件BackupManagerSchema.xml。

ERROR_CANNOT_CREATE_BACKUP

诊断:Web 部署无法在目标服务器上创建新备份。

解决方法:验证:

  1. 如果要执行 appHostConfig 提供程序同步,则提供程序的路径不为空。
  2. 如果清单中有多个采用虚拟路径的提供程序,请确保所有路径都指向同一应用程序。
  3. 如果要执行手动备份,请确保在服务器备份设置中“启用”该功能。
  4. 检查服务器事件日志,如果返回给客户端的错误消息不包含足够的信息。

ERROR_SETTING_IS_READ_ONLY

诊断:您尝试设置的备份设置标记为只读,无法设置。

解决方法:服务器管理员需要通过手动更新文件或使用 Web 部署的 PowerShell 脚本将备份设置标记为applicationHost.config文件中的“可设置”。

ERROR_FILE_IN_USE

诊断:无法覆盖或删除目标文件,因为它当前正在使用中。

解决方法:在执行同步之前,请确保目标文件未使用。如果使用 appHostConfig、iisApp 或 contentPath 提供程序) 将内容同步到 IIS 7 或更高版本上托管的网站 (,请考虑通过启用 appOffline 规则在同步期间使应用程序脱机。

可以在发布配置文件 (.pubxml) 中配置 appOffline 规则。 将 EnableMSDeployAppOffline 元素添加到 PropertyGroup,如下所示:

<PropertyGroup>
  <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
</PropertyGroup>

ERROR_FAILED_TO_BRING_APP_ONLINE

诊断:Web 部署在同步完成后无法从站点中删除app_offline.htm文件。

解决方法:可以重新运行已启用 appOffline 规则的同步,或者从目标服务器上的站点根目录中手动删除app_offline.htm文件。 有关失败原因的详细信息,请检查服务器事件日志。

可以在发布配置文件 (.pubxml) 中配置 appOffline 规则。 将 EnableMSDeployAppOffline 元素添加到 PropertyGroup,如下所示:

<PropertyGroup>
  <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
</PropertyGroup>

ERROR_HIGHER_FXVERSION_REQUIRED

诊断:Web 部署无法使用 SQL 专用管理员连接执行同步 (DAC) ,因为 SQL DAC 需要 .Net 4.0。

解决方法:确保使用 DAC 建立 SQL 连接的服务器已安装 .Net 4.0。 如果使用 msdeploy.exe 客户端进行连接,请确保它已将 .Net 4.0 列为msdeploy.exe.config文件中的第一个选项。 如果要连接到 msdepsvc 服务器终结点 (Web 部署代理服务) ,请确保它已将 .Net 4.0 列为msdepsvc.exe.config文件中的第一个选项。

ERROR_MAX_NUM_APPLICATIONS_EXCEEDED

诊断:已创建 Web 应用程序数超过目标服务器上允许的 Web 应用程序。

解决方法:从服务器管理员请求更多应用程序,或删除某些现有应用程序。

ERROR_API_NOT_SUPPORTED

诊断:所调用的 API 在目标服务器上不存在,因为服务器使用的是早期版本的 Web 部署。

解决方法:在服务器上安装最新版本的 Web 部署。

DacFxNeededForSQLProvider,

ERROR_SCRIPTDOM_NEEDED_FOR_SQL_PROVIDER,
ERROR_SQLCLRTYPES_NEEDED_FOR_SQL_PROVIDER

上面列出的 3 个错误组共享以下诊断和解决方法:

诊断:未安装 SQL DAC 及其依赖项。

解决方法:使用 Web 平台安装程序安装:

  1. Microsoft SQL Server 2012 Data-Tier Application Framework
  2. SQL Server 2012 Transact-SQL ScriptDom
  3. SQL Server系统 CLR 类型 11.0

ERROR_PACKAGE_TOO_LARGE

诊断:正在创建的包或备份超过最大大小 4GB。

解决方法:改为在创建包时使用 archiveDir 提供程序。 目前,对于自动备份,此限制没有解决方案。

ERROR_TIMED_OUT

诊断:MySqlDump 花费的时间太长,无法响应给定的查询。

解决方法:可以通过更改 WaitAttemptsSettingInfo 和 WaitIntervalSettingInfo 提供程序设置的值,更改 Web 部署等待 MySqlDump 从查询返回的时间。

ERROR_ASSEMBLY_NOT_FOUND

诊断:无法加载所需的依赖项。

解决方法:如果通过 MSI 手动安装 Web 部署,请尝试使用 Web 平台安装程序重新安装以安装 Web 部署,这有助于安装所需的依赖项。

ERROR_SMO_NEEDED_FOR_SQL_PROVIDER,

ERROR_USER_NOT_AUTHORIZED_FOR_IISAPP,
ERROR_SCRIPTER_NEEDED_FOR_SQLCE_PROVIDER

上面列出的错误组共享以下诊断和解决方法:

诊断:找不到 SQL 共享管理对象 (SMO) 或已安装的版本太旧。

解决方法:使用 Web 平台安装程序安装最新版本的 SMO。

ERROR_CANNOT_CONNECT_TO_DATABASE

诊断:无法连接到数据库。

解决方法:验证:

  1. 连接字符串是正确的。
  2. 连接字符串中指定的帐户有权访问数据库。
  3. 要连接到的数据库服务器允许远程连接。
  4. 可以从运行 Web 部署的计算机访问数据库服务器。 如果要连接到远程 Web 部署服务器并指定数据库,则需要确保远程 Web 部署服务器有权访问数据库。

ERROR_DACPAC_EXTRACTION_TIMEDOUT

诊断:DAC PAC 操作花费的时间太长,无法完成。

解决方法:通过指定 CommandTimeout 提供程序设置,增加 Web 部署等待命令完成的时间。

ERROR_NOT_SUPPORTED

诊断:Azure 网站不支持在 Web 部署发布操作期间在服务器上创建新的虚拟应用程序或修改现有应用程序配置。

解决方法:可以通过Azure 门户 (manage.windowsazure.com) 创建新的虚拟应用程序或修改站点的现有配置设置。 为此,请登录到门户,打开网站设置,然后单击“配置”选项卡。在此处,需要修改站点以匹配尝试部署的应用程序的配置设置。 在大多数情况下,这只是更改 .Net Framework 版本的问题,但在某些情况下,这可能需要添加新的虚拟应用程序。

ERROR_EXCEPTION_WHILE_CREATING_OBJECT

通常,这表示验证源上的提供程序时出现问题。 例如,如果尝试从源文件共享同步内容,并且无法访问文件共享,可能会看到此错误代码。 对于此类问题,请确保有权访问要从中发布的所有源数据。

ERROR_EXECUTING_METHOD

用于指示发布数据库时出现问题的通用错误代码。 通常,与此代码关联的堆栈跟踪和消息应指示 SQL 管理对象或 SQL Data-Tier Application Framework 引发的实际错误。