我在使用身份验证的MVC 4网站上工作。该站点要求我指定机器密钥值。我通过IIS接口取消选择“在运行时自动生成”,生成键值并选择“为每个应用程序生成唯一键”
web.config条目如下所示:
<machineKey decryption="DES" decryptionKey="{hex-key value},IsolateApps"
validationKey="{hex-key value},IsolateApps" />;
虽然这似乎在另一个Web项目上正常工作,但它导致我正在处理的开发机器上的“解密密钥指定了无效的十六进制字符”错误(在IIS-Express和IIS 7.5中)。
从键值中删除",IsolateApps"
解决了这个问题,但由于我在生产中需要这个选项,所以我现在不想删除它只是为了在部署时遇到这个问题。
是什么给出的?开发框是一个带有.net 2.0和.net 4.0的SQL 2008 R2框。
答案 0 :(得分:119)
IsolateApps
修饰符使ASP.NET为服务器上的每个应用程序生成唯一键。这仅适用于让ASP.NET在运行时自动生成密钥的情况。
如果您没有让ASP.NET自动生成密钥,而是使用decryptionKey="{hex-key value}"
指定密钥,那么让ASP.NET为每个应用程序使用不同密钥的方法就是简单地指定每个应用程序的Web.config中的不同键。
IIS配置GUI允许您使用显式键和IsolateApps
修饰符创建一个Web.config,该修饰符无效,在我看来是配置GUI中的错误。
答案 1 :(得分:6)
您可以通过在web.config See Link
中的machineKey元素(compatibilityMode =“Framework20SP1”)中添加以下内容来解决此问题。答案 2 :(得分:2)
这可以通过将machineKey行添加到web.config中来修复,并指定您的密钥如下所示(当然,使用您自己的密钥,这个很容易猜到):
while True:
code = input("")
os.system("code")