asp.net MSDeployEnableWebConfigEncryptRule无法加密web.config

我已将true到.pubxml文件以加密Web配置文件。 但是,在发布时,我收到以下错误。 我不知道除了在.pubxml中插入true之外,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文件)

问题似乎是MSDeployEnableWebConfigEncryptRule不能与具有多个web.config文件的MVC项目一起使用。 通常,MVC项目具有Views / Web.Config文件。 这似乎是MSDeploy的一个错误。
我的解决方法是使用post deployment deployhell脚本在目标服务器上执行相同的命令。 见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 

我也得到了同样的信息。 我查看了事件查看器> Microsoft Web Deploy中的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:对象已经存在。

谷歌搜索这导致我从“只是TFS”回答: 发布管理代理没有连接

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

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

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