我正在尝试获取当前用于加密/解密我的ViewState等的machineKey,以尝试调试另一个问题。 (我的应用程序位于服务器场中,并且每个服务器和应用程序的machine.config和web.config中都设置了机器密钥,因此试图调试某些资源未正确解密的问题。我正在尝试这是为了查看哪一个用于加密。)这是我的代码片段:
Line 1: Type machineKeySection = typeof(MachineKeySection);
Line 2: PropertyInfo machineKey = machineKeySection.GetProperty("ValidationKey");
Line 3: Object validationKey = machineKey.GetValue(machineKeySection, null);
Line 4: Response.Write(String.Format("Value: {1}", validationKey.ToString()));
按原样,第3行抛出“未将对象引用设置为对象的实例”。这意味着我可能没有正确设置第二个空参数(属性必须被索引,对吧?)。
但是machineKey的ValidationKey属性的ParameterInfo返回的长度为零(所以属性没有索引,对吧?)。
ParameterInfo[] paramInfo = machineKey.GetIndexParameters();
Response.Write(paramInfo.Length);
http://msdn.microsoft.com/en-us/library/b05d59ty(v=VS.90).aspx
显然我在这里可以看到一些东西,并且会喜欢第二双眼睛看这个。有什么建议吗?
答案 0 :(得分:0)
当您传入MachineKeySection的实例时,传入的是typeof(MachineKeySection)。
Type machineKeySection = typeof(MachineKeySection);
Object validationKey = machineKey.GetValue(machineKeySection, null);
需要类似(取自here):
MachineKeySection machineKeySection = (MachineKeySection)config.GetSection("system.web/machineKey");
Object validationKey = machineKey.GetValue(machineKeySection, null);
所以回答你的问题,不,它不是一个索引属性。您可以查看文档here。