【问题标题】:asp.net MSDeployEnableWebConfigEncryptRule fail to encrypt web.configasp.net MSDeployEnableWebConfigEncryptRule 无法加密 web.config
【发布时间】:2015-02-09 09:34:33
【问题描述】:

我已将<MSDeployEnableWebConfigEncryptRule>true</MSDeployEnableWebConfigEncryptRule> 添加到 .pubxml 文件以加密 Web 配置文件。但是,在发布时,我收到以下错误。除了在.pubxml中插入<MSDeployEnableWebConfigEncryptRule>true</MSDeployEnableWebConfigEncryptRule>之外,我不知道web.config文件中是否需要额外的设置

错误: Web 部署任务失败。(无法加密目标 web.config。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FAILED_TO_ENCRYPT_WEB_CONFIG。)

注意:#ERROR_FAILED_TO_ENCRYPT_WEB_CONFIG 不会出现在给定链接的任何位置。

我该如何解决这个错误? (注意:我不希望在发布之前在本地预加密 web.config 文件)

【问题讨论】:

  • 我也有同样的问题。

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:

问题似乎是 MSDeployEnableWebConfigEncryptRule 不适用于具有多个 web.config 文件的 MVC 项目。通常 MVC 项目有 Views/Web.Config 文件。这似乎是 MSDeploy 的一个错误。
我的解决方法是让部署后的 powershell 脚本在目标服务器上执行相同的命令。见http://www.iis.net/learn/publish/using-web-deploy/web-deploy-powershell-cmdlets

Powershell 脚本示例:

    Add-PSSnapin WDeploySnapin3.0
    $cmd = '%windir%\Microsoft.NET\Framework\v4.0.30319\ASPNET_REGIIS.exe -{0} {1} "{2}"' -f 'pef', 'connectionStrings', $destinationFolder
    New-WDPublishSettings -UserId $UserName -Password $Password -ComputerName $destination -AllowUntrusted -FileName server.publishsettings -AgentType MSDepSvc -Site $Website
    Invoke-WDCommand -Command $cmd  -DestinationPublishSettings server -Verbose

【讨论】:

    【解决方案2】:

    我也收到了同样的信息。 我在事件查看器 > Microsoft Web 部署中查看了 Web 部署日志。它给我的例外是:

    ERROR_FAILED_TO_ENCRYPT_WEB_CONFIG Microsoft.Web.Deployment.DeploymentDetailedClientServerException:无法加密目标 web.config:.... 了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FAILED_TO_ENCRYPT_WEB_CONFIG。 ---> System.Security.Cryptography.CryptographicException: 对象已存在。

    谷歌搜索这让我从“Just TFS”中得到了这个答案:Release Management Agent not connecting

    其中说“部署者用户 (\) 无权访问加密存储。在安装部署代理的服务器上,导航到此文件夹 %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys 和授予对 \ 的读/写访问权限。– 2014 年 9 月 3 日 12:08 的 TFS"

    所以我试图让我的 MS Deployer 用户帐户读取/写入该 MachineKeys 文件夹,但它拒绝我这样做。我最终将部署者用户帐户添加为本地管理员,并且成功了。

    能够将 web.config 文件加密成功部署到服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2010-11-07
      • 1970-01-01
      • 2014-10-26
      相关资源
      最近更新 更多