2011-05-20 75 views
2

在Web.Config中定製配置的MachineKey時,我們遇到了有關ASP.NET MVC 3 AntiForgeryToken HTML幫助程序的一些問題。如果將MachineKey更改爲以下內容(從Microsoft HowTo-指導瞭解如何配置機器密鑰),則該錯誤很容易重現。ASP.NET MVC 3 AntiForgeryToken和自定義MachineKey配置

<machineKey 
    validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7 
      AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"   
    decryptionKey="ABAA84D7EC4BB56D75D217CECFFB9628809BDB8BF91CFCD64568A145BE59719F" 
    validation="SHA1" 
    decryption="AES"/> 

通過AntiForgeryToken引發的異常情況如下:

[IndexOutOfRangeException: Index was outside the bounds of the array.] 
    System.Web.Configuration.MachineKeySection.SetInnerOuterKeys(Byte[] validationKey, Byte[]& inner, Byte[]& outer) +11499173 
    System.Web.Configuration.MachineKeySection.ConfigureEncryptionObject() +228 
    System.Web.Configuration.MachineKeySection.EnsureConfig() +287 
    System.Web.Configuration.MachineKeySection.HashData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length) +46 
    System.Web.Security.MachineKey.Encode(Byte[] data, MachineKeyProtection protectionOption) +58 
    System.Web.Helpers.AntiForgeryDataSerializer.<.ctor>b__2(Byte[] bytes) +13 
    System.Web.Helpers.AntiForgeryDataSerializer.Serialize(AntiForgeryData token) +365 
    System.Web.Helpers.AntiForgeryWorker.GetAntiForgeryTokenAndSetCookie(HttpContextBase httpContext, String salt, String domain, String path) +326 
    System.Web.Helpers.AntiForgeryWorker.GetHtml(HttpContextBase httpContext, String salt, String domain, String path) +28 
    System.Web.Helpers.AntiForgery.GetHtml(HttpContextBase httpContext, String salt, String domain, String path) +75 
    System.Web.Mvc.HtmlHelper.AntiForgeryToken(String salt, String domain, String path) +48 

這是在ASP.NET MVC 3 HTML幫助中的錯誤產生的AntiForgeryToken?或者我錯過了配置機器密鑰的事情?

+1

您是否嘗試自己生成密鑰或使用http://www.codeproject.com/KB/aspnet/machineKey.aspx?在這種情況下反射器沒有多大幫助...但是它看起來像1.0和2.0之間的keyformat有點不同。不知道是否直到3.0/4.0/MVC ... – Erlend 2011-05-20 10:28:55

+2

也許這可以幫助:http://technet.microsoft.com/en-us/library/cc772287(WS.10).aspx – Erlend 2011-05-20 10:31:00

+0

優秀 - 我認爲我可能弄糟了這些鍵,所以當我使用在線工具來生成它的鍵時,它就起作用了。 – 2011-05-20 10:35:45

回答