导航

  1. 常用CHM
  2. 订阅
  • 本站大部分内容从网上收集,收集目的仅供研究、学习。涉及版权或不希望收录您的文章请您及时与我联系。
  • 本站IM群,请自行选择。请各位朋友按照自己喜好加入。加入群后请及时发言,防止被清理。谢谢您的合作!!!
  • QQ群:Y①WEB开发(ASP.NET)号码:7351660 QQ群:Y②WEB开发(ASP+.NET)号码:11864905
  • QQ群:Y③WEB开发(DIV+CSS)号码:16610506 QQ群:Y④WEB开发(JS+AJAX)号码:16143998
  • QQ群:Y⑤WEB开发(新手)号码:12777715 MSN群:yaosansi[at]126.com
« C# 实现屏幕键盘 (ScreenKeyboard)自己开发Blog博客程序:关于MetaWeblogAPI 的实现 »

Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey?

分类: ASP.NET 发布: yaosansi 浏览: 日期: 2008年6月3日

原文:博客堂宝玉http://blog.joycode.com/dotey/archive/2007/01/23/92460.aspx

如果你的Asp.Net程序执行时碰到这种错误:“验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate”那么说明你没有让你的应用程序使用统一的machineKey,那么machineKey的作用是什么呢?按照MSDN的标准说法:“对密钥进行配置,以便将其用于对 Forms 身份验证 Cookie 数据和视图状态数据进行加密和解密,并将其用于对进程外会话状态标识进行验证。”也就是说Asp.Net的很多加密,都是依赖于machineKey里面的值,例如Forms 身份验证 Cookie、ViewState的加密。默认情况下,Asp.Net的配置是自己动态生成,如果单台服务器当然没问题,但是如果多台服务器负载均衡,machineKey还采用动态生成的方式,每台服务器上的machinekey值不一致,就导致加密出来的结果也不一致,不能共享验证和ViewState,所以对于多台服务器负载均衡的情况,一定要在每台站点配置相同的machineKey。

machineKey生成的算法:

   1: validationKey = CreateKey(20); 
   2:  
   3: decryptionKey = CreateKey(24); 
   4:  
   5:      protected string CreateKey(int len) 
   6:  
   7:      { 
   8:  
   9:             byte[] bytes = new byte[len]; 
  10:  
  11:             new RNGCryptoServiceProvider().GetBytes(bytes); 
  12:  
  13:               StringBuilder sb = new StringBuilder(); 
  14:  
  15:               for(int i = 0; i < bytes.Length; i++) 
  16:  
  17:               {    
  18:  
  19:                    sb.Append(string.Format("{0:X2}",bytes[i])); 
  20:  
  21:               } 
  22:  
  23:               return sb.ToString(); 
  24:  
  25:      } 

附参考的matchineKey配置:

   1: <?xml version="1.0"?> 
   2:  
   3: <configuration> 
   4:  
   5:   <system.web> 
   6:  
   7:     <machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/> 
   8:  
   9:      </system.web> 
  10:  
  11: </configuration>

相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-Blog 1.8 Walle Build 100427

Copyright 2005-2010 yaosansi'site All Rights Reserved.
感谢系统大玩家为本站提供FTP空间
辽ICP备05021434号