我在一个MVC3网站上工作,而ASP.NET成员资格中我有一个令人困惑的问题。我使用System.Web.Providers 1.0.1连接到sql Azure数据库。
现在,在运行在Compute Emulator下时登录的相同用户名/密码在Azure正常运行时失败。我可以看到它正在使用正确的数据库,因为会员数据库中的失败密码尝试计数器正在更新。
解决方法
感谢
this article by David Hoerster中的一些信息,我跟踪了它。问题是Azure上的默认密码散列算法与.NET 4.0默认值不同。它在Azure上设置为SHA1,HMACSHA256是4.0的新标准设置。
这可以通过在web.config中明确指定哈希类型来修复。如果您决定使用像HMACSHA256这样的方法,请确保还指定了机器密钥 – 否则将遇到类似的问题,因为自动生成的机器密钥将因服务器而异。
您需要更改的配置元素是< machinekey>在< system.web>下:
<machineKey decryptionKey="PUT_DECRYPTION_KEY_HERE" validationKey="PUT_VALIDATION_KEY_HERE" decryption="AES" validation="HMACSHA256" />
您可以使用this machine key generator以正确的格式生成随机密钥。