asp.net MSDeployEnableWebConfigEncryptRule无法加密web.config

时间:2015-02-09 09:34:33

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

问题似乎是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

答案 1 :(得分:1)

我也得到了同样的信息。 我查看了事件查看器中的Web部署日志&gt; Microsoft Web Deploy。它给我的例外是:

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。 ---&GT; System.Security.Cryptography.CryptographicException:对象已存在。

谷歌搜索这导致我从#34; Just TFS&#34;:Release Management Agent not connecting

回答

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

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

能够使用它成功加密web.config文件到服务器。