IsolateApps导致指定的解密密钥具有无效的十六进制字符

Wer*_*rVA 56 encryption asp.net-mvc machinekey

我在使用身份验证的MVC 4站点上工作.该站点要求我指定机器密钥值.我通过IIS接口取消选择"在运行时自动生成",生成键值并选择"为每个应用程序生成唯一键"

web.config条目如下所示:

<machineKey decryption="DES" decryptionKey="{hex-key value},IsolateApps" 
    validationKey="{hex-key value},IsolateApps" />;
Run Code Online (Sandbox Code Playgroud)

虽然这似乎在另一个Web项目上正常工作,但它导致我正在处理的开发机器上的"解密密钥指定了无效的十六进制字符"错误(在IIS-Express和IIS 7.5中).

",IsolateApps"从键值中删除可以解决问题,但由于我在生产中需要这个选项,所以我现在不想删除它只是为了在部署时遇到这个问题.

是什么赋予了?开发框是一个带有.net 2.0和.net 4.0的SQL 2008 R2框.

Joe*_*ley 121

IsolateApps修改使ASP.NET为您的服务器上的每个应用程序的唯一关键.这仅适用于在运行时使ASP.NET自动生成密钥的情况.

如果您没有让ASP.NET自动生成密钥,而是使用指定密钥decryptionKey="{hex-key value}",那么让ASP.NET为每个应用程序使用不同密钥的方法是在每个应用程序的Web中指定一个不同的密钥.配置.

IIS配置GUI允许您使用显式键和IsolateApps修饰符创建Web.config ,这是无效的,在我看来是配置GUI中的错误.

  • 同意(特别是与bug部分) (4认同)
  • 我们在合并Mvc和Webforms站点时遇到了这个问题,这是由于调用了'AntiForgeryToken()',它显然使用了机器密钥. (2认同)

小智 6

您可以通过将以下内容添加到web.config中的machineKey元素(compatibilityMode ="Framework20SP1")来解决此问题.请参阅链接