Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP.NET成员身份-登录在本地工作,在Azure上失败_Asp.net Mvc 3_Azure_Asp.net Membership_Membership Provider_Azure Sql Database - Fatal编程技术网

Asp.net mvc 3 ASP.NET成员身份-登录在本地工作,在Azure上失败

Asp.net mvc 3 ASP.NET成员身份-登录在本地工作,在Azure上失败,asp.net-mvc-3,azure,asp.net-membership,membership-provider,azure-sql-database,Asp.net Mvc 3,Azure,Asp.net Membership,Membership Provider,Azure Sql Database,我在一个MVC3网站上工作,我在ASP.NET成员资格方面遇到了一个令人费解的问题。我正在使用System.Web.Providers 1.0.1连接到SQL Azure数据库 现在的情况是,在计算仿真器下运行时让我登录的相同用户名/密码在Azure下正常运行时失败。我可以看到它使用的数据库是正确的,因为会员数据库中的失败密码尝试计数器正在更新。多亏了中的一些信息,我找到了它。问题在于Azure上的默认密码哈希算法不同于.NET4.0的默认密码哈希算法。它在Azure上设置为SHA1,HMACS

我在一个MVC3网站上工作,我在ASP.NET成员资格方面遇到了一个令人费解的问题。我正在使用System.Web.Providers 1.0.1连接到SQL Azure数据库


现在的情况是,在计算仿真器下运行时让我登录的相同用户名/密码在Azure下正常运行时失败。我可以看到它使用的数据库是正确的,因为会员数据库中的失败密码尝试计数器正在更新。

多亏了中的一些信息,我找到了它。问题在于Azure上的默认密码哈希算法不同于.NET4.0的默认密码哈希算法。它在Azure上设置为SHA1,HMACSHA256是4.0上的新标准设置

这可以通过在web.config中显式指定哈希类型来解决。如果您决定使用HMACSHA256这样的方法,请确保还指定了一个机器密钥-否则您将遇到类似的问题,因为自动生成的机器密钥在不同的服务器上会有所不同

您需要更改的配置元素位于:



您可以使用生成正确格式的随机密钥。

我无法告诉您具体问题是什么,但我建议您为部署启用Intellitrace。启用Intellitrace后,只需部署云项目,进行一次登录尝试,然后下载Intellitrace日志。你会发现Intellitrace是多么强大和有用,我相信你会通过查看异常来解决这个问题。谢谢你的建议,但据我所知,Intellitrace仅支持VS Ultimate,我不确定我是否准备在当前MSDN订阅的基础上额外支付12000美元,这可能会解决我的问题,也可能不会解决我的问题。等等……你说的是“在计算仿真器下”,这意味着你使用的是web角色或工作者角色,而不是web站点(即IIS),对吗?下面的machinekey更改是否会改变您的计算仿真程序的行为?您的评论让我困惑了一秒钟,因为我已经离开Azure循环一段时间了-我看到6月份的更新引入了Azure“网站”,而不是“web角色”,这是2011年发布问题时唯一的选择:-)也是的,更改机器密钥/散列算法意味着必须重新生成密码才能在计算仿真器下工作,但它们将在测试和外部工作。如果您有一组需要保留的哈希密码,我想您可以克隆现有的机器密钥,但我不知道在哪里可以找到它。谢谢您的参考!)不客气-如果不是你,我不会认识杰克什:-)哈哈哈!!!那太好笑了。我需要进一步推广这个缩写词。谢谢你的笑声!如果我能投更多的票,我会的。我认为这是一个散列问题,因为我可以看到它击中了数据库,而不是验证。它为什么会发生是个谜。奇怪的是,通过Azure发布登录到Azure失败了。通过Web发布部署它工作了。我想Web部署必须对机器密钥做一些不同的操作。谢谢你!您是否也需要在成员标签中指定hashAlgorithmType=“SHA256”?还是hashAlgorithmType=“HMACSHA256”?
<machineKey decryptionKey="PUT_DECRYPTION_KEY_HERE"
            validationKey="PUT_VALIDATION_KEY_HERE"
            decryption="AES"
            validation="HMACSHA256" />