18

我正在使用MVC3網站,並且ASP.NET成員資格有一個令人費解的問題。我正在使用連接到SQL Azure數據庫的System.Web.Providers 1.0.1。ASP.NET成員資格 - 登錄在本地工作,在Azure上失敗

就像現在一樣,在Azure正確運行時,在Compute Emulator下運行時記錄我的相同用戶名/密碼失敗。我可以看到它正在使用正確的數據庫,因爲正在更新成員資格數據庫中的失敗密碼嘗試計數器。

+0

我不能告訴你具體問題是什麼,但我會建議您爲您的部署啓用Intellitrace。啓用Intellitrace後,只需部署雲項目,進行一次登錄嘗試,然後下載Intellitrace日誌。你會發現Intellitrace是多麼強大和有用,我相信你會通過查看異常來確定問題。 – astaykov

+1

謝謝你的建議,但據我所知,Intellitrace只支持VS Ultimate,我不確定我準備在我們當前的MSDN訂閱的基礎上額外支付12,000美元用於可能或可能會發生的事情沒有解決我的問題。 –

+0

掛在......你說的「在計算模擬器下」這意味着你正在使用web角色或工作者角色 - 而不是網站(即IIS),對吧?下面的機器鍵更改會改變計算模擬器的行爲嗎? –

回答

28

我跟蹤了下來,感謝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生成適當的格式隨機密鑰。

+1

感謝您的參考! :) –

+1

不客氣 - 如果不是你,我不會知道JACSHT :-) –

+1

哈哈哈!!!那真好笑。我需要更多地推廣這個縮略詞。謝謝你的笑! –